比方說,我有以下代碼:如何在JavaScript中查找實例對象的初始創建者?
var Foo = (function() {
//constructor
var Foo = function (callbackFunction) {
this.callbackFunction = callbackFunction;
};
//method
Foo.prototype = {
run: function() {
if (typeof(this.callbackFunction) === 'function') {
this.callbackFunction.call(???); //??? should be the object that created this Foo instance.
}
}
};
return Foo;
})();
,這是保存在foo.js
我也有下面的代碼:
var Bar = (function() {
//constructor
var Bar = function (v1, v2) {
this.v1 = v1;
this.v2 = v2;
};
Bar.prototype.callback = function() {
//'this' should be the instance of Bar
console.log('value of v1 is ' + this.v1 + ' value of v2 is ' + this.v2);
}
Bar.prototype.callFoo = function() {
this.foo = new Foo(this.callback);
this.foo.run();
}
return Bar;
})();
var bar1 = new Bar('apple', 'orange');
bar1.callFoo();
var bar2 = new Bar('grape', 'banana');
bar2.callFoo();
再次,這裏面保存吧。 js
Foo裏面,我有這樣一行:this.callbackFunction.call(???);
因此,爲了做到這一點,我必須將創建Foo實例的對象傳遞給調用函數,但是如何實現?
我想你應該刪除'prototype'。使用'Bar.callback'將[工作](http://jsfiddle.net/mGPf2/)。 – DontVoteMeDown
難道你不能只在'this.foo.run(this);'中傳遞'this'作爲參數嗎? – basilikum
@basilikum,我想我可以,但現在Bar創建Foo,我不知道讓foo和bar指向對方是不是一個好主意。這是我的擔心。 – Josh