Получить значение статических свойств из статических методов в JavascriptMVC - PullRequest
1 голос
/ 05 марта 2012

Я работаю над своим первым проектом с JavascriptMVC .

У меня есть класс Foo.

$.Class('Foo',{
    // Static properties and methods
    message: 'Hello World',
    getMessage: function() {
        return Foo.message;
    }
},{});

Это отлично работает. Но что, если я не знаю название класса? Я хочу что-то вроде этого:

$.Class('Foo',{
    // Static properties and methods
    message: 'Hello World',
    getMessage: function() {
        return this.message;
    }
},{});

но я не могу использовать this в статическом свойстве. Итак, как я могу получить имя текущего класса из статического метода.

Из способа-прототипа это легко:

this.constructor.shortName/fullName.

а как это сделать статическим методом?

1 Ответ

0 голосов
/ 05 марта 2012

Правда в том, что я был неправ.Можно использовать this в статическом методе.Вот небольшой фрагмент кода, который может помочь понять, как работают статические методы и свойства JavascriptMVC, а также область действия this в обоих из них.

$.Class('Foo', 
{
  aStaticValue: 'a static value',
  aStaticFunction: function() {
    return this.aStaticValue;
  }
}, 
{
  aPrototypeValue: 'a prototype value',
  aPrototypeFunction: function() {
    alert(this.aPrototypeValue); // alerts 'a prototype value'
    alert(this.aStaticValue); // alerts 'undefined'
    alert(this.constructor.aStaticValue); // alerts 'a static value'
  }
});

alert(Foo.aStaticFunction()); // alerts 'a static value'
var f = new Foo();
alert(f.aPrototypeValue); // alerts 'a prototype value'
f.aPrototypeFunction();
...