Javascript:引用变量
嗨,我可以知道,有没有其他的实现让我达到与上面代码相同的效果Javascript:引用变量,javascript,Javascript,嗨,我可以知道,有没有其他的实现让我达到与上面代码相同的效果 为什么我不能得到stoleIdentity的结果?JavaScript中的这个是由非常具体的情况定义的;我们感兴趣的是“方法调用”,如下所示: var foo = { _name: 'John', getIdentity: function (){ return this._name; } }; var stoleIdentity = foo.getIdentity; console
为什么我不能得到
stoleIdentity
的结果?JavaScript中的这个
是由非常具体的情况定义的;我们感兴趣的是“方法调用”,如下所示:
var foo = {
_name: 'John',
getIdentity: function (){
return this._name;
}
};
var stoleIdentity = foo.getIdentity;
console.log(stoleIdentity());
console.log(foo.getIdentity());
如果函数调用中未提及接收方,则它是普通函数调用,而不是方法调用,此
未设置
因此,foo.getIdentity()
是一个方法调用,它将this
设置为foo
,并将this.\u name
计算为foo.\u name
stoleIdentity()
是一个普通的函数调用,它不会更改this
和this。_name
可能会访问窗口。_name
,除非this
同时以其他方式更改
您可以使用function.prototype.bind
(更改此
的另一种方法)将接收器绑定到函数值。因此,如果改用这一行,代码将正常工作:
receiver.method(argument_list...)
这是JavaScript中的
由非常特定的环境定义的;我们感兴趣的是“方法调用”,如下所示:
var foo = {
_name: 'John',
getIdentity: function (){
return this._name;
}
};
var stoleIdentity = foo.getIdentity;
console.log(stoleIdentity());
console.log(foo.getIdentity());
如果函数调用中未提及接收方,则它是普通函数调用,而不是方法调用,此
未设置
因此,foo.getIdentity()
是一个方法调用,它将this
设置为foo
,并将this.\u name
计算为foo.\u name
stoleIdentity()
是一个普通的函数调用,它不会更改this
和this。_name
可能会访问窗口。_name
,除非this
同时以其他方式更改
您可以使用function.prototype.bind
(更改此
的另一种方法)将接收器绑定到函数值。因此,如果改用这一行,代码将正常工作:
receiver.method(argument_list...)
当您将foo.getIdentity指定给stoleIdentity时,此选项已更改。您可以将此日志记录下来以进行检查 使用此绑定将其绑定到stoleIdentity以使其工作
var foo={
_姓名:'约翰',
getIdentity:函数(){
返回此。\u名称;
}
};
var stoleIdentity=foo.getIdentity.bind(foo);
log(stoleIdentity());
log(foo.getIdentity())代码>当您将foo.getIdentity指定给stoleIdentity时,此选项已更改。您可以将此日志记录下来以进行检查
使用此绑定将其绑定到stoleIdentity以使其工作
var foo={
_姓名:'约翰',
getIdentity:函数(){
返回此。\u名称;
}
};
var stoleIdentity=foo.getIdentity.bind(foo);
log(stoleIdentity());
log(foo.getIdentity())代码>这应该是答案。非常感谢您的解释。这让我明白了。这应该是答案。非常感谢你的解释。它让我明白了。