js - 在向其附加属性后访问父对象

时间:2017-03-24 20:28:24

标签: javascript

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: function() {
    console.log(this.foo);
  },
  baz: function() {
    return smth();
  },
  etc: function() {
    return smth();
  }
};

obj.barMethods = obj2;

obj.barMethods.bar();

1 个答案:

答案 0 :(得分:1)

使用经典的function语法而不是箭头函数:

obj = {foo: 'foo'}

obj2 = {
  bar: function() { console.log(this.foo) }
}

obj.bar = obj2.bar

obj.bar() // "foo"

  

箭头函数表达式的语法短于函数   表达式和不绑定自己的this ,参数,super或   new.target。这些函数表达式最适合非方法   函数,它们不能用作构造函数。

Source,强调我的