Javascript expando对象

什么是JavaScript中的expando对象?

为了什么目的,我们需要这个? 任何完整的例子将不胜感激

我在这里find1篇文章Javascript:Web开发的红头发的继子女

那么,在JavaScript中,任何对象都是一个expando对象。 正如文章所涵盖的那样,只要你试图访问一个属性,它就会自动创build。

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

当你给myProp分配一个值的时候,属性myProp是dynamic创build的,尽pipe它以前不存在。 在很多其他的语言中,例如C#,这通常是不可能的(实际上C#刚刚启用了expando对象支持,但除此之外)。 要访问C#中普通类的属性,您需要在类中指定它确实具有此属性。

1不太正确。 请参阅下面的npup的评论澄清。

除了基本types(string,数字,布尔)之外的所有东西都是对象,并支持Key:值结构。 属性(键)可以使用点符号以及方括号来访问和设置。

 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(作为访问元素的唯一方法)? 这是一个大红旗。

它只是打扮“你可以添加属性的对象”与一些stream行语。

我们需要能够做到这一点,否则我们将无法存储数据,这将使JavaScript成为一个相当无用的语言。

(一切都是一个数组?不,它不是一个数组,而且它没有使用hasOwnProperty包装来遍历一个对象,这是不安全的,只是远离文章,这比无用)

JavaScript将具有特定名称ID的元素转换为返回的DOM对象的扩展名。 这里解释。

Interesting Posts