for...in 循环只遍历可枚举属性。
Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。
循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性。
function ColoredTriangle() {
this.color = 'red';
}
var triangle = {a: 1, b: 2, c: 3};
ColoredTriangle.prototype = triangle;
var obj = new ColoredTriangle();
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
}