我试图通过传递具有附加功能的新对象来扩展旧对象的功能Object.assign
。
const oldObj = () => {
const printLog = () => console.log("hello");
return {printLog};
};
const newObj = () => {
const test = () => {
printLog(); //fails here!
console.log("world");
};
return {test};
};
const mix = Object.assign(oldObj(), newObj());
mix.printLog();
mix.test();
我的mix
对象执行失败,即使它有机器printLog
和test
方法:
Object {printLog: function, test: function}
如何修复代码,以便test
函数按预期工作?
答案 0 :(得分:2)
要访问printLog
,您必须通过this
访问它。但是,您的函数test
不能是箭头函数,因为箭头函数使用它们所定义的上下文的this
上下文,因此要获得所需的结果,请将printLog()
更改为{ {1}}并将this.printLog()
从箭头功能切换为常规功能:
test
答案 1 :(得分:0)
编辑:将您的代码更改为:
const oldObj = () => {
const printLog = () => console.log("hello");
return {printLog};
};
const newObj = () => {
function test() {
this.printLog();
console.log("world");
};
return {test};
};
const mix = Object.assign(oldObj(), newObj());
mix.printLog();
mix.test();