我正在尝试将this
变量绑定到新对象。
function Parent(){
//sub-component constructors
this.components={
node:function(){
this.name = 'jordan';
}
},
//subcomponent methods
this.ctrl={
nodes:{
type1:{
test1:function(){
console.log('firing');
console.log(this);
//return undefined should return 'jordan'
console.log(this.name);
},
test2:function(){
console.log(this);
}
}
}
}
};
//INIT
function init(){
//CREATE NEW
var parent = new Parent();
var props = {
"ctrl": parent.ctrl.nodes.type1
};
//OBJECT ASSIGN
var node = Object.assign(new parent.components.node(),props);
console.log(node);
//WHY ISN'T THE (THIS) VARIABLE SET WHEN I CALL
node.ctrl.test1();
}
//EXECUTE INIT
document.addEventListener('DOMContentLoaded',init);
问题:当我致电this
Object.assign()
时,为什么node.ctrl.test1()
变量不会从console.log(this.name)
设置?
答案 0 :(得分:0)
查看Object.assign
:
Object.assign(target, ...sources)
这意味着Object.assign(parent.components.node,props)
将props
对象分配给parent.components.node
,覆盖之前分配给它的函数。
调用node.ctrl.test1()
的方式与您尝试调用props.ctrl.test1()
的方式相同,这显然无效。
new parent.components.node()
也不起作用,因为您将props
分配给使用node
作为构造函数返回的对象。该对象只有name
属性。