⭐️ Object.entries
- 返回一个给定对象自身可枚举属性的键值对数组
- 不包括原型上的
function Test() {
this.a = 1;
this.b = 2;
}
Test.prototype.c = 3;
Object.defineProperty(Test.prototype, 'd', {
value: 4
});
var test = new Test();
var testArr = Object.entries(test);
for (const [key, value] of testArr) {
console.log(key, value);
}
// 对比 for in
for (var key in test) {
console.log(key, test[key]); // 原型上的可枚举属性也会被打印
}
配合 map 使用
var obj = {
a: 1,
b: 2
}
var objArr = Object.entries(obj);
var map = new Map(objArr);
console.log(map);
原理
Object.prototype.myEntries = function(obj) {
var _pool = [];
if (Object.prototype.toString.call(obj) === '[object Object]') {
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
_pool.push([key, obj[key]]);
}
}
}
return _pool;
};
var obj = {
a: 1,
b: 2
}
obj.__proto__.c = 3;
var objArr = Object.myEntries(obj);
console.log(objArr);