首页 > 解决方案 > `this.function()` 和 `function.call(this)` 之间有区别吗?

问题描述

阅读本教程后,我想我对如何使用 call 和 apply 有所了解。但是,我仍然有点困惑。

有没有使用function.call(this, arguments)与使用不同的this.function(arguments)情况?

如果不是,那我们为什么需要这个call功能?

标签: javascript

解决方案


const person = {
  name: "Bob",
  greet: function() { console.log("Hello " + this.name) }
};

const thank = function() {
  console.log("Thanks " + this.name);
}

person.greet()与 相同person.greet.call(person),但第一个更简洁,所以这就是存在此变体的原因。

call当函数不是对象的成员时,函数很有用。你不能打电话person.thank(),你必须打电话thank.call(person)


推荐阅读