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