JavaScript
ES5 和 ES6 对象遍历方法
for...in for...of Object.keys() Object.getOwnPropertyNames() Reflect.ownKeys() Object.getOwnPropertyDescriptors() for...in 遍历可枚举的自由属性或继承的属性,不包括 Symbol 属性 for...of 只能遍历可枚举的自由属性,不能遍历 Symbol 和继承属性 Object…
for...in for...of Object.keys() Object.getOwnPropertyNames() Reflect.ownKeys() Object.getOwnPropertyDescriptors() for...in 遍历可枚举的自由属性或继承的属性,不包括 Symbol 属性 for...of 只能遍历可枚举的自由属性,不能遍历 Symbol 和继承属性 Object…
遍历可枚举的自由属性或继承的属性,不包括 Symbol 属性
var obj = {
name: "hello",
career: "world",
[Symbol()]: "symbolValue"
};
Object.defineProperty(obj, "age", {
value: "23",
enumerable: false
});
Object.prototype.protoPer1 = function() {
console.log("proto");
};
Object.prototype.protoPer2 = 2;
for (var key in obj) {
console.log(`key:${key}`);
}
// 输出
// key:name
// key:career
// key:protoPer1
// key:protoPer2
只能遍历可枚举的自由属性,不能遍历 Symbol 和继承属性
var obj = {
name: "hello",
career: "world",
[Symbol()]: "symbolValue"
};
Object.defineProperty(obj, "age", {
value: "23",
enumerable: false
});
Object.prototype.protoPer1 = function() {
console.log("proto");
};
Object.prototype.protoPer2 = 2;
// 如何用for of遍历对象
let { keys, values, entries } = Object;
for (let [key, value] of entries(obj)) {
console.log(key, value);
}
// 输出
// name hello
// career world
以数组形式返回对象的自有可枚举属性,不包括 Symbol 属性
var obj = {
name: "hello",
career: "world",
[Symbol()]: "symbolValue"
};
Object.defineProperty(obj, "age", {
value: "23",
enumerable: false
});
Object.prototype.protoPer1 = function() {
console.log("proto");
};
Object.prototype.protoPer2 = 2;
console.log(Object.keys(obj));
Object.keys(obj);
// 输出
// ["name", "career"]
以数组形式返回对象的自有可枚举或不可枚举属性,不包括 Symbol 属性
var obj = {
name: "hello",
career: "world",
[Symbol()]: "symbolValue"
};
Object.defineProperty(obj, "age", {
value: "23",
enumerable: false
});
Object.prototype.protoPer1 = function() {
console.log("proto");
};
Object.prototype.protoPer2 = 2;
console.log(Object.getOwnPropertyNames(obj));
// 输出
// ["name", "career", "age"]
以数组形式返回对象的自有可枚举或不可枚举属性,包含 Symbol 属性
var obj = {
name: "hello",
career: "world",
[Symbol()]: "symbolValue"
};
Object.defineProperty(obj, "age", {
value: "23",
enumerable: false
});
Object.prototype.protoPer1 = function() {
console.log("proto");
};
Object.prototype.protoPer2 = 2;
console.log(Reflect.ownKeys(obj));
// 输出
// ["name", "career", "age", Symbol()]
返回对象的自有属性描述符,包含 Symbol 属性描述符
var obj = {
name: "hello",
career: "world",
[Symbol()]: "symbolValue"
};
Object.defineProperty(obj, "age", {
value: "23",
enumerable: false
});
Object.prototype.protoPer1 = function() {
console.log("proto");
};
Object.prototype.protoPer2 = 2;
console.log(Object.getOwnPropertyDescriptors(obj));
// 输出
// {age: {value: "23", writable: false, enumerable: false, configurable: false},
// career: {value: "world", writable: true, enumerable: true, configurable: true},
// name: {value: "hello", writable: true, enumerable: true, configurable: true},
// Symbol(): {value: "symbolValue", writable: true, enumerable: true, configurable: true}}
暂无评论
确认操作
请再次确认编辑图片
待上传图片 (剩余 0 张)
项目详情
确认评论邮箱
邀请制评论