[英]Why javascript bind doesn't work
功能:
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);
绑定有什么问题?
它确实有效,talk.bind(p) 返回绑定函数:
talk.bind(p)();
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
bind
没有任何问题,它返回一个绑定到作为参数传递的对象的函数。 所以你需要像这样调用它
talk.bind(p)();
正如其他人所提到的, bind 似乎按预期工作,但它需要调用。
另一个更简洁的解决方案,特别是如果每个“Person”对象都需要对话的能力,将在 person 构造函数中包含该函数:
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();
看到这个小提琴: http : //jsfiddle.net/amspianist/J5BSh/
可以使用call 或 apply代替bind
talk.call(p);
talk.apply(p);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.