javascripts中的expando对象是什么?
我们需要这个的目的是什么?任何完整的例子将不胜感激
我在这里找到了 1 篇文章Javascript:Web 开发的红发继子
好吧,在 javascript 中,任何对象都是 expando 对象。正如文章所述,这意味着每当您尝试访问属性1时,它都会自动创建。
var myObj = {}; // completely empty object
myObj.myProp = 'value';
在您分配值的那一刻myProp
,该属性myProp
被动态创建,即使它以前不存在。在许多其他语言中,例如 C#,这通常是不可能的(实际上 C# 也刚刚启用了 expando 对象支持,但这不是重点)。要在 C# 中访问普通类中的属性,您需要在类中指定它确实具有此属性。
1不太正确。有关说明,请参阅下面的 npup 评论。
除了原始类型(字符串、数字、布尔值)之外的所有内容都是对象并支持 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
2007 年写的一篇使用 document.all(作为访问元素的唯一方式)的文章?这是一个很大的危险信号。
它只是用一些流行语来修饰“您可以向对象添加属性”。
我们需要能够做到这一点,否则我们将无法存储数据,这将使 JavaScript 成为一种非常无用的语言。
(一切都是一个数组?不,它不是。它在没有 hasOwnProperty 包装器的情况下迭代一个对象。这不安全。远离文章,它比无用更糟糕)
JavaScript 将具有特定名称 ID 的元素转换为返回的 DOM 对象的扩展。它在这里解释。