📅  最后修改于: 2023-12-03 15:07:40.831000             🧑  作者: Mango
在 JavaScript 中,Object.values() 可以获取对象中所有属性值,并返回一个数组。但这个方法并不是所有浏览器都支持,所以我们需要自己实现一个类似的方法。下面是一个简单的示例。
function objectValues(obj) {
return Object.keys(obj).map(key => obj[key]);
}
这个方法中,首先使用 Object.keys() 获取对象中所有的属性名,返回一个数组。然后使用 map() 方法遍历这个数组,并返回对应属性名的属性值,并组成一个新的数组返回。
function objectValues(obj) {
let values = [];
for (let prop in obj) {
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
values.push(obj[prop]);
}
}
return values;
}
这个方法中,遍历对象的所有属性名,并使用 hasOwnProperty() 方法判断该属性名是否为对象自己的属性。如果是,则将对应的属性值添加到一个数组中,并最终返回数组。
function objectValues(obj) {
let propNames = Object.getOwnPropertyNames(obj);
let values = [];
for (let i = 0; i < propNames.length; i++) {
let propName = propNames[i];
values.push(obj[propName]);
}
return values;
}
这个方法中,首先使用 Object.getOwnPropertyNames() 方法获取对象的所有属性名,返回一个数组。然后使用 for 循环遍历这个数组,并返回对应属性名的属性值,并组成一个新的数组返回。
以上三种方法都能够实现类似 Object.values() 的功能,可以根据实际需求进行选择。需要注意的是,使用 for...in 循环可能会遍历到原型链上的属性,所以需要使用 hasOwnProperty() 方法进行判断。