在Chrome的js控制台中执行时,我对以下脚本的行为感到惊讶:
var me = { name: 'John'};
function theFunc(){
console.log(this);
}
theFunc.bind(me);
theFunc();//this is window???
我期待绑定函数调用绑定到对象文字...
答案 0 :(得分:3)
您需要调用(将其分配给变量)函数,如此
theFunc = theFunc.bind(me);
theFunc();
bind()方法创建一个新函数,在调用时,它具有 此关键字设置为提供的值,具有给定的序列 调用新函数时提供的任何参数。
P.S。在我们的例子中,您也可以使用call
或apply
,就像这样
var me = { name: 'John'};
function theFunc(){
console.log(this);
}
// theFunc.call(me); or
theFunc.apply(me);
答案 1 :(得分:2)
.bind()
会返回新函数,然后必须将其设置为要保存的变量。
请参阅MDN。
var me = { name: 'John'};
function theFunc(){
console.log(this);
}
theFunc = theFunc.bind(me);
theFunc();