Javascript раскрыть объекты - PullRequest
       20

Javascript раскрыть объекты

49 голосов
/ 24 марта 2010

Что такое расширенные объекты в javascripts?

Для чего нам это нужно? Любой полный пример будет оценен

Я нашел 1 статью здесь Javascript: рыжий пасынок веб-разработки

Ответы [ 4 ]

41 голосов
/ 24 марта 2010

Ну, в javascript любой объект является объектом раскрытия.Это означает, что, как показано в статье, всякий раз, когда вы пытаетесь получить доступ к свойству 1 , оно будет автоматически создано.свойство myProp создается динамически, хотя раньше его не было.Во многих других языках, таких как C #, это обычно невозможно (на самом деле C # только что включил поддержку объекта expando, но это не главное).Чтобы получить доступ к свойству в обычном классе в C #, необходимо указать в классе, что оно действительно имеет это свойство.

1 Не совсем правильно.См. Комментарий npup ниже для уточнения.

10 голосов
/ 19 января 2011

Все, кроме примитивных типов (string, number, boolean), являются объектами и поддерживают структуру Key: values. Свойства (ключи) могут быть доступны и установлены с помощью точечной нотации, а также в квадратных скобках.

var myObj = {};   
myObj.myProp1 = 'value1'; //works, an expando property   
myObj[myProp2] = 'value2'; // doesn't work, myProp2 is an undefined name.
myObj['myProp2'] = 'value2'; // works  , an expando property   
myObj[2010]= 'value'; //note the key is number, still works, an expando property??   
myObj.2010 = 'value'; // FAILS. to use dot notation, key must be a string
4 голосов
/ 02 марта 2011

JavaScript превращает элементы с определенными идентификаторами имен в расширения возвращаемого объекта DOM. Это объясняется здесь .

4 голосов
/ 24 марта 2010

Статья, написанная в 2007 году, которая использует document.all (как только способ доступа к элементам)? Это большой красный флаг.

Это просто одевание "Вы можете добавить свойства к объекту" с помощью некоторых модных слов.

Нам нужно это сделать, потому что иначе мы не смогли бы хранить данные, и это сделало бы JavaScript довольно бесполезным языком.

(Все является массивом? Нет, это не так. И он перебирает объект без оболочки hasOwnProperty. Это небезопасно. Просто держитесь подальше от статьи, это хуже, чем бесполезно)

...