javascript函数的bind方法问题

时间:2015-01-13 13:24:54

标签: javascript

在Chrome的js控制台中执行时,我对以下脚本的行为感到惊讶:

var me = { name: 'John'};

function theFunc(){
 console.log(this);
}

theFunc.bind(me);

theFunc();//this is window???

我期待绑定函数调用绑定到对象文字...

2 个答案:

答案 0 :(得分:3)

您需要调用(将其分配给变量)函数,如此

theFunc = theFunc.bind(me);

theFunc();
  

bind()方法创建一个新函数,在调用时,它具有   此关键字设置为提供的值,具有给定的序列   调用新函数时提供的任何参数。

.bind

Example

P.S。在我们的例子中,您也可以使用callapply,就像这样

var me = { name: 'John'};

function theFunc(){
 console.log(this);
}

// theFunc.call(me); or

theFunc.apply(me);

Example

答案 1 :(得分:2)

.bind()会返回函数,然后必须将其设置为要保存的变量。

请参阅MDN



var me = { name: 'John'};

function theFunc(){
 console.log(this);
}

theFunc = theFunc.bind(me);

theFunc();