Как вы читаете точечную нотацию в JavaScript? - PullRequest
2 голосов
/ 20 декабря 2008

Ради примера, это утверждение

window.Number.constructor.prototype.constructor();

читать как путь?

C:\Users\Vista\Documents\Work\text.txt

Слева направо

window:\Number\constructor\prototype\constructor()

где window является корневым объектом, Number является объектом внутри window, constructor является объектом внутри Number, prototype является объектом внутри constructor и constructor() является объектом объект внутри prototype?

Так же, как в этом утверждении

window.document.myForm.textBox.value;

, что равно

[object].[object].[object].[object].1

где объекты фактически не действуют друг на друга?

OR

Читаются ли фактические значения справа налево, когда каждый объект воздействует на объект непосредственно слева от него?

Где

window.Number.constructor.prototype.constructor();

равно

[object] . function Number() { [native code] } . function Function() { [native code] } . function prototype() { [native code] } . function anonymous() { }

в

window.Number(9.256).toFixed(2);

равно

[object].(9.256).(9.26);

где toFixed - это свойство, которое использует возвращаемое значение объекта Number, а результат сохраняется как свойство объекта window?

Как вы, вероятно, можете сказать, я как бы запутался здесь :) Просто с трудом оборачиваю голову вокруг концепции точек. Я уверен, что фон в Java помог бы, но, к сожалению, у меня его нет (пока).

Ответы [ 3 ]

3 голосов
/ 20 декабря 2008

Читайте слева направо. Каждая «вещь» превращается в объект. Объекты могут иметь свойства или функции. Свойство - это другой объект, который, в свою очередь, может иметь свои собственные свойства и функции. Если это функция, то для правильного синтаксиса функция должна возвращать объект. Тогда связанный элемент справа должен быть свойством (или функцией) этого объекта.

Фреймворк, такой как jQuery, работает так, что каждый из его методов возвращает копию самого себя, так что методы могут быть связаны вместе.

В вашем первом примере это относится к цепочке свойств объекта, кроме последнего, являющегося функцией. Во втором случае он вызывает функцию для объекта окна, которая возвращает объект Number, который имеет функцию toFixed ().

0 голосов
/ 20 декабря 2008

Слева направо.

0 голосов
/ 20 декабря 2008

Да, или как поле в struct в C. На самом деле это набор хеш-таблиц или словарей. Итак, ваш пример

window.Number.constructor.prototype.constructor()

Is "Объект окна, элемент с именем" Number ", который содержит элемент с именем" constructor ", который содержит элемент с именем" prototype "- где и названы методы - который содержит метод именованный конструктор. " Этот окончательный () означает «и обрабатывать это как функцию без аргументов».

...