Javascript js-在附加属性后访问父对象
我怎样才能使Javascript js-在附加属性后访问父对象,javascript,Javascript,我怎样才能使obj.bar()产生'foo' 从本质上说,我试图做的是创建一个对象,并在稍后向其附加一个方法,该方法将能够访问原始对象中的数据 更新 如果我在obj2中有多个方法,并希望将它们作为一个组添加到obj1,该怎么办?那么第一种情况的解决方案就不合适了 obj = {foo: 'foo'} obj2 = { bar: ()=> console.log(this.foo) } obj.bar = obj2.bar obj.bar() 使用经典的函数语法代替箭头函数:
obj.bar()
产生'foo'
从本质上说,我试图做的是创建一个对象,并在稍后向其附加一个方法,该方法将能够访问原始对象中的数据
更新如果我在
obj2
中有多个方法,并希望将它们作为一个组添加到obj1
,该怎么办?那么第一种情况的解决方案就不合适了
obj = {foo: 'foo'}
obj2 = {
bar: ()=> console.log(this.foo)
}
obj.bar = obj2.bar
obj.bar()
使用经典的
函数
语法代替箭头函数:
obj={foo:'foo'}
obj2={
bar:function(){console.log(this.foo)}
}
obj.bar=obj2.bar
obj.bar()/“foo”
这应该可以工作。实际结果是什么?未定义
因为这个
是窗口对象啊,对了,箭头函数有不同的绑定behavior@avalanche1正如我在上面的评论中所说:箭头函数具有不同的绑定行为OK,谢谢!这是非常误导的。。。很坏的他们为什么要这样做呢???@avalanche1如果你知道的话,这非常有用。:-)我已经修改了我的问题,使之更接近我的实际案例——你能这么看吗?好吧,最好的解决方案可能是首先用一个合适的原型定义obj
。作为一种解决方法,您可以在飞行中将obj
的原型设置为obj2
:Object.setPrototypeOf(obj,obj2);对象条();//“foo”
。您还可以在调用函数时设置其上下文:obj.barMethods.bar.apply(obj);//“foo”
obj = {foo: 'foo'}
obj2 = {
bar: function() {
console.log(this.foo);
},
baz: function() {
return smth();
},
etc: function() {
return smth();
}
};
obj.barMethods = obj2;
obj.barMethods.bar();