Это один мне было интересно:
js> var p = { this.header = null; };
js: "<stdin>", line 11: invalid property id
js: var p = { this.header = null; };
js: ..............^
js: "<stdin>", line 11: syntax error
js: var p = { this.header = null; };
js: ..............................^
излишнего объяснение этого следует:
Это носорог предполагая ответ: this.header
текста будет интерпретироваться как имущественный идентификатор, а также Идентификатор свойства недействителен. Итак, вы узнали, что { }
- это объект, который «содержит» свойства, а имя свойства не может выглядеть как this.header
. Вы можете пойти дальше и проверить синтаксис для «объекта»; это выглядит просто как { propertyId1 : value1, propertyId2 : value2, ...}
.
js> var p = { header:0, doit: function(){this.header=null;} };
Это принято, на самом деле соблюдается «синтаксис объекта»; мы определили объект с двумя свойствами, header
с целым числом 0 и doit
, удерживая функцию.
Теперь вы можете задаться вопросом, почему существует {this.header=null;}
; это потому, что вы не должны путать синтаксис объекта с использованием {}
, чтобы «разграничить» «блок» кода, в этом случае «содержащий» самую функцию, ее код. Эти {}
не представляют ту же самую вещь «голый» {}
, и это становится ясно из-за присутствия function()
.
js> p.header;
0
Это показывает, что свойство header
имеет 0, простой простой очевидный факт.
js> p.doit();
Это выполняет функцию, имевшихся в собственности doit
. Чего мы ожидаем? Этот вопрос нисходит от вопроса, что такое this
.
js> p.header;
null
Когда мы снова проверить содержание имущества header
, мы видим, что изменяется в нуль. Это означает, что в функции в свойстве используется свойство doit
- объект, содержащий «свойство», сам объект p.
Оригинал, удален, вики сообщества пост был:
Это один мне было интересно:
js> var p = { this.header = null; };
js: "<stdin>", line 11: invalid property id
js: var p = { this.header = null; };
js: ..............^
js: "<stdin>", line 11: syntax error
js: var p = { this.header = null; };
js: ..............................^
js> var p = { header:0, doit: function(){this.header=null;} };
js> p.header;
0
js> p.doit();
js> p.header;
null
Конец исходное сообщение
Все это отвечает на вопрос возможно, по-другому, по пути, молчаливым и неявным образом, что режим сообщества Wiki мог бы помочь в росте с более «говорящими примерами» (lear с использованием практики и интерпретации ошибок).
Но это не было «пойманным», и были добавлены явные «дедуктивные» шаги.
Думаю, вам стоит потратить еще немного времени на [Руководство по JavaScript MDN] (https://developer.mozilla.org/en/JavaScript/Guide). Синтаксис литерала объекта вовсе не связан с синтаксисом функции. –
Почему вы думаете, что это были эквиваленты?!? есть ли в обороте какая-либо книга или веб-страница, которая так говорит? – Aprillion
@FelixKling - Я работаю над реализацией шаблона фабричного дизайна в javascript и немного подхватил здесь определение моего объекта в более общем виде и просто немного крутился вокруг. Я использовал оба определения до этого, но, как я думаю, сейчас я просто ушел. –