Вопрос об объекте Javascript - PullRequest
3 голосов
/ 08 мая 2011

Я новичок с Javascript.Я смотрю на следующий код, который кто-то написал:

function MeetingPage()
{
   MeetingPage.colors = new Object();
}

...

var meeting = new MeetingPage();

Из того, что я видел, я считаю, что функция MeetingPage создает объект, который позже кто-то удерживает на собрании.Что такое MeetingPage.colors?Является ли префикс MeetingPage каким-то глобальным?Это какой-то указатель "this"?

Буду признателен за любые предложения.

Ответы [ 3 ]

8 голосов
/ 08 мая 2011

На самом деле это просто плохой код. MeetingPage.colors = new Object(); устанавливает свойство с именем colors для функции MeetingPage , т.е.:

function MeetingPage(){ }
MeetingPage.colors = {};

Что совершенно верно, поскольку все функции в JavaScript являются объектами. Проблема в том, что если у вас есть несколько экземпляров страницы собрания:

var meeting1 = new MeetingPage();
var meeting2 = new MeetingPage();

Код, который вы разместили, будет сброшен colors. Он должен быть либо записан как this.colors = {}, либо должен быть установлен вне функции, как в моем первом фрагменте.

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

Это синтаксис JavaScript для создания Свойства класса .Обратите внимание, что это свойство class , а не свойство instance , что означает, что оно является общим для всех экземпляров класса.(Если вы знаете C ++, это похоже на класс static). Однако я не думаю, что было бы правильно поместить свойство класса в сам конструктор.Я думаю, что каждый раз, когда создается новая MeetingPage, свойство класса colors будет уничтожено.

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

Этот разговор был действительно полезен, когда я познакомился с различными шаблонами объектов в javascript. Пример кода включен во вторую ссылку (видео вводит его).

http://alexsexton.com/?p=94

http://alexsexton.com/inheritance/demo/

http://alexsexton.com/?p=51

Конечно, вы обязательно должны прочитать http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742

НТН

...