Javascript" .call"不明白

时间:2014-05-25 23:27:09

标签: javascript

我没有得到最后两行之间的差异,特别是myFunc.call和myFunc之间的差异。有人可以向我解释一下吗?我真的很感激。

var myObject = {
length: 400,
};

function myFunc () {
return console.log(this.length);

}

myFunc.call(myObject); // equals 400
myFunc(myObject); // equals zero

2 个答案:

答案 0 :(得分:2)

.call()允许您在指定函数内部引用的this时调用函数。在没有.call的情况下调用它会使用当前值this

在您的示例中,myFunc.call(myObject)myFunc myObject运行thisthis.length允许{{1}}实际引用某些内容。

答案 1 :(得分:1)

call方法用于指定函数的上下文,就像函数是对象的成员一样,并被称为方法:

var myObject = {
  length: 400,
  myFunc: function () {
    return console.log(this.length);
  }
};

myObject.myFunc(); // equals 400