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();