const person = {
    name: "Mike",
    country: "New Zealand"
}

function personUpdate(name, country) {
    this.name = name
    this.country = country
}

personUpdate.bind(person)

personUpdate('Tony', 'Chile')


为什么不起作用? person仍具有原始属性“ Mike”和“ New Zealand”。为什么不personUpdate.bind(person)我要创建它,以便每次对personUpdate this的调用都引用person对象(并且不使用new)。

最佳答案

调用.bind不会修改您传入的函数;它返回一个新的绑定函数。

所以你想要:

var boundPersonUpdate = personUpdate.bind(person);
boundPersonUpdate(...); // call the bound version


要么:

personUpdate = personUpdate.bind(person); // overwrite the original function

09-25 19:43