Переменная класса в классе javascript - PullRequest
0 голосов
/ 20 апреля 2009

Решение этого вопроса предполагает использование реализации класса Джона Резига. Это решение покрывает все мои потребности, кроме:

Как объявить публичную глобальную переменную внутри этого класса, к которой можно получить доступ извне?

Я бы хотел установить что-то вроде следующего:

    var MyClass = Class.extend({

        EVENT_NAME : 'event-name',

        init : function() {
            // ...
        }

    });

// Now another file can directly read this value without creating the class object
console.log( MyClass.EVENT_NAME );

Ответы [ 3 ]

4 голосов
/ 20 апреля 2009

«Единственный» способ сделать то, что вы хотите сделать, это использовать функцию в качестве «класса». Таким образом, вы объявляете «класс», к публичным «статическим» членам которого можно получить доступ. Примерно так:

function MyObject() {
  // constructor stuff here
}
MyObject.EVENT_NAME = "event_name";

console.log(MyObject.EVENT_NAME); // No need to instantiate MyObject

Однако, мне кажется, что вы смешиваете понятия из статически типизированных языков с более динамичным материалом Javascript. Почему вы хотите получить доступ к члену объекта, который не был создан?

1 голос
/ 20 апреля 2009

Объявите это в контексте окна или не используйте ключевое слово 'var':

window.globalVar = somevalue
globalVar = somevalue
0 голосов
/ 20 апреля 2009
var MyClass = Class.extend({

        EVENT_NAME : 'event-name',

        init : function() {
            // ...
        }
        return {
            event_name: function() { return EVENT_NAME; }
        }

    });
    console.log( MyClass.event_name );

На самом деле, если честно, я не уверен, как вышеперечисленное будет работать с .extend(), так как раньше я не использовал extend(). Тем не менее, метод return { name:value } является довольно распространенным способом демонстрации общедоступных методов экземпляров в объектах. Это не должно занять много времени, чтобы проверить это должным образом, извините, у меня не было возможности сделать это самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...