Попытка зарегистрировать несколько экземпляров объекта с использованием статического метода и статического хеш-объекта - PullRequest
0 голосов
/ 20 мая 2011

Я не знаю, правильно ли я описываю это, но я пытаюсь использовать статические члены для обработки хранения и выборки объектов, но это не работает и не выдает ошибку в 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 () {

    },
}

Ответы [ 3 ]

0 голосов
/ 20 мая 2011

Не уверен, почему вы создаете объекты только для того, чтобы зарегистрироваться где-нибудь с произвольными ключами. Возможно, это даст вам то, что вы хотите

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
0 голосов
/ 21 мая 2011

Извините, это была опечатка. У меня там был знак доллара: $ cfg. Вот что происходит, когда вы переходите от js к php

MyClass.register = function (id, $cfg) {

//this is where it goes poof.... no error just stops
MyClass.instances[id] = new MyClass(cfg);
0 голосов
/ 20 мая 2011

MyClass.prototype.init не определено в вашем коде.Это означает, что this.init не определено при создании new MyClass.Однако я не знаю, почему такая ошибка не появляется в Firebug.

...