Javascript 如何使用for/in在js中循环对象?
我读到: for…in循环的问题是它会在原型链中的属性之间进行迭代。当使用for…in循环遍历对象时,需要检查该属性是否属于该对象。可以使用hasOwnProperty执行此操作 那么原型链中的属性是什么 以及for/in如何迭代它们 我尝试在有和没有Javascript 如何使用for/in在js中循环对象?,javascript,object,Javascript,Object,我读到: for…in循环的问题是它会在原型链中的属性之间进行迭代。当使用for…in循环遍历对象时,需要检查该属性是否属于该对象。可以使用hasOwnProperty执行此操作 那么原型链中的属性是什么 以及for/in如何迭代它们 我尝试在有和没有hasOwnProperty 但它给出了同样的结果 var myCar = { color : "red" , type : "sedan" , price : "100,000" , model : "2020"
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])
};
两种代码的结果如下:
颜色:红色
类型:轿车
价格:100000
型号:2020下面的修改代码显示了问题所在:
function Car(){
this.color = "red";
this.type = "sedan";
this.price = "100,000";
this.model = "2020";
}
Car.prototype.test = function() {};
let myCar = new Car();
var prop ;
for (prop in myCar) {
if (myCar.hasOwnProperty(prop)){
console.log(prop + " : " + myCar[prop])
}
};
for (prop in myCar) {
console.log(prop + " : " + myCar[prop])
};
输出:
color : red
type : sedan
price : 100,000
model : 2020
color : red
type : sedan
price : 100,000
model : 2020
test : function() {}
在第二个循环的最后一次迭代中,将显示原型函数(或Car
类的方法),即使它不是属性,但它属于Car
我认为循环遍历对象属性的最佳方法是使用object.keys
:
Object.keys(myCar).forEach(prop => {
console.log(prop + " : " + myCar[prop]);
});
您可以将属性添加到对象的原型中,在中,这些属性将被视为对象的属性。该方法确定此属性是否为对象的直接属性 你可以阅读更多关于
功能车(){
this.color='red';
this.type=‘sedan’;
这个价格是‘100000’;
该模型='2020';
}
Car.prototype.foo='bar';
const car=新车();
console.log('Props');
用于(让道具进入车内){
log(`${prop}:${car[prop]}`);
};
console.log(“自己的道具”);
用于(让道具进入车内){
if(汽车自有财产(道具)){
log(`${prop}:${car[prop]}`);
}
};代码>所有JavaScript对象都有一个原型<代码>for(obj中的prop)
枚举所有对象属性(拥有和继承自原型)。在您的例子中,原型没有任何属性,因此它们是等价的。.hasOwnProperty
是一种仅在当前对象上定义而不是继承属性时才返回true
的方法。您可以阅读更多内容。在ES6中,更好的方法是for(Object.entries(myCar)的const[prop,value]){