问题
找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
1、返回数组,格式为 key: value
2、结果数组不要求顺序
答案
- Object.keys 方法(156 ms)
返回可枚举的实例属性的数组。
function iterate(obj) {
return Object.keys(obj).map(function(key) {
return key + ": " + obj[key];
});
}
- for-in 和 hasOwnProperty 方法(171 ms)
前者用于遍历所有属性,后者用于判断是否为实例属性。
function iterate(obj) {
const res = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
res.push(prop + ": " + obj[prop]);
}
}
return res;
}
- Object.getOwnPropertyNames 方法(209 ms)
用法跟1.一样,区别在于返回的是所有实例属性(包括不可枚举的)。
function iterate(obj) {
return Object.getOwnPropertyNames(obj).map(function(key) {
return key + ": " + obj[key];
});
}