Javascript绑定函数到一个对象

时间:2017-07-04 01:47:11

标签: javascript

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的{​​{1}}每次调用都会引用person对象(而不使用new)。

2 个答案:

答案 0 :(得分:2)

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

所以你想要:

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

或:

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

答案 1 :(得分:0)

我已经尝试过你的代码,我认为没有任何问题。

const person = {
name: "Mike",
country: "New Zealand"
}
function personUpdate(name, country) {
this.name = name;
this.country = country;

console.log(this.name);
console.log(this.country);
}
personUpdate.bind(person);
personUpdate('Tony', 'Chile');

我试图打印它,它正在给我" Tony"和#34;智利",或者我误解了你的问题?