作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到:"for...in 循环的问题在于它会遍历 Prototype 链中的属性。当您使用 for...in 循环遍历对象时,您需要检查该属性是否属于该对象。您可以用 hasOwnProperty 做到这一点。”那么原型(prototype)链中的属性是什么以及如何 for/in 遍历它们?
我尝试在有和没有hasOwnProperty
的情况下运行代码但它给出了相同的结果
var myCar = {
color : "red" ,
type : "sedan" ,
price : "100,000" ,
model : "2020"
};
var prop ;
for (prop in myCar) {
if (myCar.hasOwnProperty(prop)){
console.log(prop + " : " + myCar[prop])
}
};
for (prop in myCar) {
console.log(prop + " : " + myCar[prop])
};
两个代码的结果是:红色类型:轿车价格:100,000型号:2020
最佳答案
您可以向对象的原型(prototype)添加属性,这些属性将被视为对象的属性,用于for..in
。 hasOwnProperty()方法确定此属性是否是对象的直接属性。
您可以阅读更多关于 inheritance and the prototype chain here 的信息.
function Car() {
this.color = 'red';
this.type = 'sedan';
this.price = '100,000';
this.model = '2020';
}
Car.prototype.foo = 'bar';
const car = new Car();
console.log('Props');
for (let prop in car) {
console.log(`${prop}: ${car[prop]}`);
};
console.log('Own props');
for (let prop in car) {
if (car.hasOwnProperty(prop)){
console.log(`${prop}: ${car[prop]}`);
}
};
关于javascript - 如何使用for/in循环遍历js中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55895144/
我是一名优秀的程序员,十分优秀!