我正在使用OOP并查看如何迭代对象值,例如,这段代码:
var numbers = {
one: "number one",
two: "number two",
three: "number three",
four: "number four"
};
并迭代其值,我得到了这个:
for(var index in numbers){
var x = index;
console.log(numbers[x]);
}
虽然看起来更深入并且正在研究,我在mozillla.org上看到我也可以迭代这样的对象值:
console.log(Object.values(numbers));
我的问题是,一个人对另一个人有什么好处吗?在日常编程中,人们会使用一个吗?
答案 0 :(得分:0)
for...in
循环遍历对象可枚举属性,包括继承属性。此外,它还是ES5,并且受到当前所有浏览器的支持。
var obj1 = { a: 1, b: 2 };
var obj2 = Object.create(obj1);
obj2.c = 3;
for (var key in obj2) {
console.log(obj2[key]);
}

Object#values
创建一个对象拥有的属性数组(不是继承的属性),并且不会迭代它们。此外,由于它是ECMAScript 2017草案,IE和旧浏览器缺乏支持。
var obj1 = { a: 1, b: 2 };
var obj2 = Object.create(obj1);
obj2.c = 3;
console.log(Object.values(obj2));

如果要迭代对象自己的属性并支持旧浏览器,可以将Object#keys
与数组迭代方法一起使用,例如Array#forEach
:
var obj1 = { a: 1, b: 2 };
var obj2 = Object.create(obj1);
obj2.c = 3;
var result = Object.keys(obj2).forEach(function(key) {
console.log(obj2[key]);
});