Javascript раскрыть объекты
Что такое объекты расширения в javascripts?
Для чего нам это нужно? Любой полный пример будет оценен
Я нашел 1 статью здесь Javascript: рыжий пасынок веб-разработки
4 ответа
Ну, в javascript любой объект является объектом раскрытия. Это означает, что, как говорится в статье, всякий раз, когда вы пытаетесь получить доступ к свойству1, оно создается автоматически.
var myObj = {}; // completely empty object
myObj.myProp = 'value';
Момент, который вы назначаете myProp
ценность, свойство myProp
динамически создается, хотя раньше его не было. Во многих других языках, таких как C#, это обычно невозможно (на самом деле C# только что включил поддержку объекта expando, но это не главное). Чтобы получить доступ к свойству в обычном классе в C#, вам нужно указать в классе, что оно действительно имеет это свойство.
1 Не совсем правильно. См. Комментарий npup ниже для уточнения.
Все, кроме примитивных типов (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
JavaScript превращает элементы с определенными идентификаторами имен в развёртки возвращаемого объекта DOM. Это объясняется здесь.
Статья, написанная в 2007 году, которая использует document.all (как единственный способ доступа к элементам)? Это большой красный флаг.
Это просто одевание "Вы можете добавить свойства к объекту" с помощью некоторых модных слов.
Мы должны быть в состоянии сделать это, потому что иначе мы не смогли бы хранить данные, и это сделало бы JavaScript довольно бесполезным языком.
(Все является массивом? Нет, это не так. И он перебирает объект без оболочки hasOwnProperty. Это небезопасно. Просто держитесь подальше от статьи, это хуже, чем бесполезно)