javascript defineProperty 使属性不可枚举

Posted

技术标签:

【中文标题】javascript defineProperty 使属性不可枚举【英文标题】:javascript defineProperty to make an attribute non enumerable 【发布时间】:2012-05-03 10:07:13 【问题描述】:

我正在尝试使用 defineProperty 使属性不出现在 for...in 循环中,但它不起作用。这段代码正确吗?

function Item() 
    this.enumerable = "enum";
    this.nonEnum = "noEnum";

Object.defineProperty(Item, "nonEnum",  enumerable: false );

var test = new Item();

for (var tmp in test)
    console.log(tmp);

【问题讨论】:

【参考方案1】:

Item 没有名为 nonEnum (check it out) 的属性。它是一个(构造函数)函数,将创建一个具有名为nonEnum 的属性的对象。

所以这个可以工作:

var test = new Item();
Object.defineProperty(test, "nonEnum",  enumerable: false );

你也可以这样写这个函数:

function Item() 
    this.enumerable = "enum";
    Object.defineProperty(this, "nonEnum",  
        enumerable: false, 
        value: 'noEnum' 
    );

jsFiddle Demo

【讨论】:

以上是关于javascript defineProperty 使属性不可枚举的主要内容,如果未能解决你的问题,请参考以下文章

Javascript Object.defineProperty的使用

javascript defineProperty 使属性不可枚举

JavaScript使用Object.defineProperty方法实现双数据绑定

关于javascript中defineProperty的学习

JavaScript的Object.defineProperty()属性

JavaScript的Object.defineProperty()属性