Подтвердить что ты не робот

Объекты javascript expando

Что такое объекты expando в javascripts?

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

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

4b9b3361

Ответ 1

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

var myObj = {}; // completely empty object
myObj.myProp = 'value';

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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