是否可以在javascript中创建一个隐藏的属性 - 代码日志

是否可以在javascript中创建一个隐藏的属性

我想创建一个具有隐藏属性的对象(一个不显示在一个for(var x in obj循环中)的属性)是否可以这样做?
在ECMAScript 3中是不可能的(2010年这个问题是主要浏览器实现的)。然而,在ECMAScript 5中,所有主流浏览器的当前版本实现,可以将属性设置为不可枚举:

var obj = {
   name: "Fred"
};

Object.defineProperty(obj, "age", {
    enumerable: false,
    writable: true
});

obj.age = 75;

/* The following will only alert "name=>Fred" */
for (var i in obj) {
   window.alert(i + "=>" + obj[i]);
}

这在当前浏览器中起作用:有关旧版浏览器中兼容性的详细信息,请参阅http://kangax.github.com/es5-compat-table/

请注意,在调用Object.defineProperty中,属性也必须设置为可以正常分配(默认情况下为false)。

http://stackoverflow.com/questions/2636453/is-it-possible-to-create-a-hidden-property-in-javascript

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:是否可以在javascript中创建一个隐藏的属性