如果验证成功,下面的代码会传递一个字符串来验证和调用函数。最后我们到达回调,这是对象函数,但如果不能识别它自己。如何克服这种情况?
function A(arg) {
this.b = arg
this.validate = function(name, cb) {
textarea1.textContent += ("in validate, b = " + this.b + ", f = " + this.f) + "\n"
return cb(name)
}
this.f = function(name) {
textarea1.textContent += ("in f, b = " + this.b) + '\n'
}
}
var a = new A(1)
a.validate("name", a.f)

<textarea id="textarea1" cols=100 rows=5></textarea>
&#13;
答案 0 :(得分:0)
尝试以下方法:
return cb.call(this, name);
方法.call
将实例的引用传递给回调,以便this
按预期引用a
。
答案 1 :(得分:0)
与此同时,我对a.f.bind(a)
javascript风格感到困惑,我经常在libs中观察到这种风格,寻找使用额外绑定调用而不是普通this.func
的原因。 Adeneo避免了两种混淆。也就是说,我的例子证明了普通函数迟早会丢失它所属的对象。绑定更强烈地附着对象。