功能:
function talk(){
console.log(this.name + " dice: ");
}
var Person = function(name, surname){
this.name = name;
this.surname = surname;
}
var p = new Person("Mark", "Red");
talk.bind(p);
绑定有什么问题?
答案 0 :(得分:16)
它确实有效,talk.bind(p)返回绑定函数:
talk.bind(p)();
答案 1 :(得分:7)
bind()
没有任何问题 - 它没有被正确使用。 bind()
返回一个绑定到指定对象的新函数。您仍然需要执行该功能:
function talk(){
console.log(this.name + " dice: ");
}
var Person = function(name, surname){
this.name = name;
this.surname = surname;
}
var p = new Person("Mark", "Red");
var markTalks = talk.bind(p);
markTalks(); // logs properly
答案 2 :(得分:2)
bind
没有错,它返回一个绑定到作为参数传递的对象的函数。所以你需要像这样调用它
talk.bind(p)();
答案 3 :(得分:1)
正如其他人所提到的,bind似乎按预期工作,但需要调用。
另一种更清洁的解决方案,特别是如果每个人都能更清洁。对象需要谈话的能力,将在人员构造函数中包含该函数:
var Person = function(name, surname){
this.name = name;
this.surname = surname;
this.talk = function(){
console.log(this.name + " dice: ");
}
}
var p = new Person("Mark", "Red");
p.talk();
答案 4 :(得分:1)
call or apply可以代替bind
talk.call(p);
talk.apply(p);