我正在尝试使用 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(self) 总是指的是窗口,我希望它指的是对象本身。
我知道这是一个范围问题,但我对如何创建对对象的引用感到困惑?
我正在尝试使用 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(self) 总是指的是窗口,我希望它指的是对象本身。
我知道这是一个范围问题,但我对如何创建对对象的引用感到困惑?
例如,如果我想做:
var myObject = Class({
initialize: function() {
$('#myDiv').click( function() {
self.anotherFunction();
});
},
anotherFunction: function() {
alert('hi');
}
});
我需要能够用自己引用“myObject”...