首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么for...in不打印出对象中的属性?

为什么for...in不打印出对象中的属性?
EN

Stack Overflow用户
提问于 2013-06-22 05:06:04
回答 1查看 85关注 0票数 1

我编写了以下javascript,并期望看到来自Obj2的所有属性以及(我认为)将成为基类对象的属性。为什么我看不到像prototype和toString这样的属性与1和2一起列出?

代码语言:javascript
复制
Obj2 = function() {
   this.one = "one";
   this.two = "two";
}

var obj2 = new Obj2();

for(var i in obj2) {
    try {
        console.log(i + ": " + obj2[i]);
    }
    catch(e) {
        console.log(i + " caused error: " + e);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-22 05:20:08

正如lan所说,for ... in只对可枚举的属性进行迭代,如果您想获得实例的所有属性(不管是不是可枚举的),您可以尝试Object.getOwnPropertyNames()

Live Demo

代码语言:javascript
复制
function Obj2() {
    this.one = "one";
    this.two = "two";
}

var obj2 = new Obj2(),
    proto = obj2,
    keys = Object.getOwnPropertyNames(proto);


while (proto) {
    for (var i in keys) {
        try {
            console.log(keys[i] + ": " + proto[keys[i]]);
        } catch (e) {
            console.log(i + " caused error: " + e);
        }
    }
    proto = Object.getPrototypeOf(proto);
    keys = proto ? Object.getOwnPropertyNames(proto) : null;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17244301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档