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();
答案 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,强调我的