首页 > 试题广场 >

如下两个普通对象可以不考虑执行环境的兼容性,实现如下要求:

[问答题]

如下两个普通对象

可以不考虑执行环境的兼容性,实现如下要求:
- 执行 a.methodA() 输出 1
- 执行 a.methodB() 输出 2
- 执行 b.bar=3; a,method() 输出 3
发表于 2017-03-06 14:34:02 回复(1)
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();


编辑于 2017-08-30 16:28:38 回复(0)
var a = {
	foo : 1,
	methodA : function(){
		console.log(this.foo);
	}
};
var b = {
	bar : 2,
	methodB : function(){
		console.log(this.bar)
	}
};

a.methodB = function(){
	return b.methodB();
}

a.methodA(); //1
a.methodB(); //2
b.bar = 3;
a.methodB(); //3

编辑于 2017-08-22 11:51:11 回复(1)
a.methodB = function () {
    return b.methodB()
}
a.method = function () {
    return b.methodB()
}

发表于 2017-08-21 16:35:31 回复(0)
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();
a.method = a.methodB;
b.bar = 3;
a.method();
发表于 2017-12-08 15:25:39 回复(0)
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.methodB();
发表于 2017-09-02 16:04:36 回复(0)
//执行 a.methodA() 输出 1
a.methodA.call(a) 
发表于 2017-08-29 16:14:11 回复(0)
var a = { foo:1, foo:2, methodA:function(){ console.log(this.foo);
    }, methodB:function(){ b.methodB.call(this);
    }
} var b={ bar:2, methodB:function(){ this.name=b.bar; console.log(this.name);
    }
} a.methodB(); b.bar=3; a.methodB();

发表于 2017-08-27 19:53:22 回复(0)
重点考察__proto__属性
发表于 2017-08-24 23:17:25 回复(0)
a.methodB=b.methodB.bind(b);
发表于 2017-08-22 11:49:04 回复(0)