我想用Javascript創建一個「Class」工廠,這樣我就可以創建不同類型的對象。如何在新的JavaScript函數中引用自我?
這裏是我使用的功能:
var Class = function(methods) {
var klass = function() {
var self = this;
this.initialize.apply(this, arguments);
};
for (var property in methods) {
klass.prototype[property] = methods[property];
}
if (!klass.prototype.initialize) klass.prototype.initialize = function(){};
return klass;
};
然後,我可以這樣做:
var myObject = Class({
initialize: function() { console.log(self);}
});
var createdObject = new myObject();
然而,執行console.log(個體經營)總是指窗口,我d喜歡它來引用對象本身。
我知道這是一個範圍問題,但我很困惑如何創建一個對象的引用?
我想用Javascript創建一個「Class」工廠,這樣我就可以創建不同類型的對象。
這裏是我使用的功能:
var Class = function(methods) {
var klass = function() {
var self = this;
this.initialize.apply(this, arguments);
};
for (var property in methods) {
klass.prototype[property] = methods[property];
}
if (!klass.prototype.initialize) klass.prototype.initialize = function(){};
return klass;
};
然後,我可以這樣做:
var myObject = Class({
initialize: function() { console.log(self);}
});
var createdObject = new myObject();
然而,執行console.log(個體經營)總是指窗口,我想它是指對象本身。
我知道這是一個範圍問題,但我很困惑如何創建一個對象的引用?
例如,如果我想要做的:
var myObject = Class({
initialize: function() {
$('#myDiv').click(function() {
self.anotherFunction();
});
},
anotherFunction: function() {
alert('hi');
}
});
我需要能夠與自我引用「myObject的」 ......
嘗試'this',而不是'self'? –
'self'指向全局對象,至少在webkit中。 – dfsq
沒錯......那麼我如何指向當前的對象呢? – johnnietheblack