【发布时间】:2020-04-13 14:59:47
【问题描述】:
MDN 是这么说的
for...in 循环仅迭代可枚举的非符号属性。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
但我做了一个简单的测试,它表明即使是 Symbol 属性也在“for...in”循环中迭代。
这里有什么问题?
我错过了什么?
示例 1:
var symbol = Symbol("test");
function Animal(name){
this.name = name;
}
Animal.prototype = {};
Animal.prototype.constructor = Animal;
function Dog(breed){
this.breed = breed;
this.name = "Dog";
this.s = symbol;
}
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;
console.log("001");
var d = new Dog("Sharo");
for (let x in d){
console.log(x, ":", d[x]);
}
console.log("002");
d = new Object();
for (let x in d){
console.log(x, ":", d[x]);
}
console.log("003");
d = new Number(5);
for (let x in d){
console.log(x, ":", d[x]);
}
【问题讨论】:
-
你能显示测试的代码吗?
-
@funnydman 是的,当然。添加了代码。
-
未来读者须知:我已经编辑了 MDN 文章以澄清导致此问题的句子。
标签: javascript for-loop