Соглашение для классов пространства имен против экземпляров в JavaScript? - PullRequest
1 голос
/ 22 июня 2011

Я создаю экземпляр класса, используя следующий код:

  test = new function(){
    ...
  }

Однако у base нет прототипа, потому что он был создан из анонимной функции (полагаю, в этом причина?),Это не позволяет мне создавать какие-либо общедоступные функции для экземпляра.

Можно утверждать, что я мог бы обойти это, просто выполнив:

  function testClass(){
    ...
  }
  test = new testClass()

и затем прикрепив общедоступные функции к testClass.Но это заставляет меня делать ненужные пространства имен.В частности, если бы я назвал свой класс this.is.a.space, то как бы я назвал свой экземпляр?this.is.a.spaceInstance?this.is.a.space.Instance?

Существует ли соглашение для такого рода вещей?

1 Ответ

0 голосов
/ 22 июня 2011

Вы все еще можете закодировать анонимную функцию и использовать .__proto__ для доступа к ее прототипу следующим образом:

test = new function(){
    ...
};

test.__proto__.foo = function() { return 1 };

Однако у вас есть только один экземпляр, поэтому вы также можете просто использовать:

test.foo = function() { return 1 };

Я не совсем уверен, что именно вы пытаетесь достичь, но что касается именования, обычно имя класса называется SomeClass и другие переменные (например, экземпляры) в соответствии с someVariable. JavaScript учитывает регистр, поэтому вы можете использовать TestClass / testClass.

...