关于javascript:forin-循环及-hasOwnProperty


for in 不能循环动静属性 this.xxx
for in 疏忽原型 prototype;
for in 能够循环原型链 __proto__(优先级别最低);
for in 疏忽 enumerable: undefined|null|false|0
hasOwnProperty 能够过滤原型链 proto
hasOwnProperty 不能够过滤 enumerable 为真的属性

function F() {
    this.p0 = 'this.p0';
}

F.__proto__.p1 = 'f.__proto__.p1';
F.p2 = 'f.p2';
F.prototype.p3 = 'f.prototype.p3';
Object.defineProperty(F, 'p4', {value: 'defineProperty enumerable: undefined'});
Object.defineProperty(F, 'p5', {value: 'defineProperty enumerable: true', enumerable: true});

for (var k in F) {
    console.log('hasOwnProperty:', F.hasOwnProperty(k), '\t', k, '->', F[k]);
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理