我不知道我是否正确地描述了这个,但是我正在尝试使用静态成员来处理存储和获取对象实例,但它不起作用并且不会在FireBug中引发错误。当它到达MyClass.instances [id] = new MyClass(cfg);执行就此停止。
/*
I want to be able to call like so:
MyClass.register('34', cfg);
and then use like...
MyClass.get('34').someMeth();
*/
/* MyClass */
var MyClass = function(config){
this.init (config);
};
/* static var to hold instances */
MyClass.instances = {};
/* static method to register an instance */
MyClass.register = function (id, $cfg) {
//this is where it goes poof.... no error just stops
MyClass.instances[id] = new MyClass(cfg);
return;
}
/* static method to get an instance */
MyClass.get = function (id) {
return MyClass.instances[id];
}
/* object instance methods here */
MyClass.prototype = {
init: function () {
},
someMeth: function () {
},
}
答案 0 :(得分:0)
MyClass.prototype.init
。这意味着在您创建this.init
时未定义new MyClass
。我不知道为什么这样的错误不会出现在Firebug中。
答案 1 :(得分:0)
不确定为什么要创建对象只是为了用任意键注册某个地方。也许这会给你你想要的东西
var register = [];
var obj = {
i: 'gots',
mad: 'properties'
};
var newObject = Object.create( obj );
newObject.i = 'don't gots';
register.push( newObject );
var anotherObject = Object.create( obj );
anotherObject.i = 'got mad';
register.push( anotherObject );
var whatObject = register[0];
console.log( whatObject.i ); //don't gots
console.log( register[1].i ); //gots mad
答案 2 :(得分:0)
对不起,这是一个错字。我在那里有美元符号:$ cfg。这就是你从js到php来回发生的事情
MyClass.register = function (id, $cfg) {
//this is where it goes poof.... no error just stops
MyClass.instances[id] = new MyClass(cfg);