在javascript中将对象函数作为回调传递

时间:2015-01-29 23:22:14

标签: javascript oop

如果验证成功,下面的代码会传递一个字符串来验证和调用函数。最后我们到达回调,这是对象函数,但如果不能识别它自己。如何克服这种情况?



    	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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

return cb.call(this, name);

方法.call将实例的引用传递给回调,以便this按预期引用a

答案 1 :(得分:0)

与此同时,我对a.f.bind(a) javascript风格感到困惑,我经常在libs中观察到这种风格,寻找使用额外绑定调用而不是普通this.func的原因。 Adeneo避免了两种混淆。也就是说,我的例子证明了普通函数迟早会丢失它所属的对象。绑定更强烈地附着对象。