如下两个普通对象
可以不考虑执行环境的兼容性,实现如下要求:
- 执行 a.methodA() 输出 1
- 执行 a.methodB() 输出 2
- 执行 b.bar=3; a,method() 输出 3
var a = { foo:1, methodA:function(){ alert(this.foo); } }; var b = { bar:2, methodB:function(){ alert(this.bar); } }; a.methodA(); a.methodB = function(){ b.methodB(); } a.methodB(); b.bar=3; a.method = function(){ alert(b.bar); } a.method(); // 另外一种方法 var a = { foo:1, methodA:function(){ alert(this.foo); } }; var b = { bar:2, methodB:function(){ alert(this.bar); } }; a.__proto__ = b; a.methodA(); a.methodB() b.bar = 3; a.method = a.methodB; a.method();