2016-08-02 72 views
0

为什么不将通知更改绑定到变量值?另外,为什么不绑定当您运行me = {'name': 'Rob2'};这将创建一个全新的对象,并将其分配到me变量接受像warrior.bind({'name': 'Rob3'}, 'ninja')为什么不将通知更新绑定到变量?

function warrior(kind){ 
    console.log(this.name); 
} 

var me = {'name': 'Rob'}  
var ninja = warrior.bind(me, "ninja"); 
ninja(); 
me = {'name': 'Rob2'}; 
ninja(); 

回答

1

一个未清除的变量。 ninja函数仍然绑定到旧的me。相反,你需要保持同一个对象,但只能修改其属性,就像这样:

me.name = 'Rob2'; 

不知道这个问题是使用对象的warrior.bind功能字面的东西,这对我的作品,但你要能够稍后改变对象。

+0

你是我在第二部分的错误,它现在起作用。我一定是错误地输入了它。 – Rob

1

实际上,您正在创建新对象并将此新创建的对象的引用分配给me变量。如果要继续使用绑定而不是创建新对象,则应该更新属性。

function warrior(kind){ 
    console.log(this.name); 
} 

var me = {'name': 'Rob'}  
var ninja = warrior.bind(me, "ninja"); 
ninja(); 
me.name = 'Rob2'; // Do not create new object. Update already existing one. 
ninja(); 
相关问题