Object.keys(obj)
返回一个由给定对象的所有自身属性的键组成的数组。
let obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj)); // 输出: ["a", "b", "c"]
Object.values(obj)
返回一个由给定对象自身的所有可枚举属性值的数组。
let obj = { a: 1, b: 2, c: 3 };
console.log(Object.values(obj)); // 输出: [1, 2, 3]
Object.entries(obj)
返回一个给定对象自身可枚举属性的键值对数组。
let obj = { a: 1, b: 2, c: 3 };
console.log(Object.entries(obj)); // 输出: [["a", 1], ["b", 2], ["c", 3]]
Object.assign(target, ...sources)
将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
let target = { a: 1, b: 2 };
let source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target); // 输出: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget); // 输出: Object { a: 1, b: 4, c: 5 }
Object.create(proto, [propertiesObject])
创建一个新对象,使用现有的对象来提供新创建的对象的proto
const person = {
isHuman: false,
printIntroduction: function() {
console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`);
}
};
const me = Object.create(person);
me.name = "Matthew"; // "name" 是 "me" 的属性.
me.isHuman = true; // 继承的属性 "isHuman" 被 "me" 覆盖了.
me.printIntroduction();
// 输出: "My name is Matthew. Am I human? true"
Object.hasOwnProperty(obj, prop)
检查一个对象是否拥有某个属性,不考虑该对象的原型链。
let obj = { prop: 'exists' };
console.log(Object.hasOwnProperty.call(obj, 'prop')); // 输出: true
console.log(Object.hasOwnProperty.call(obj, 'toString')); // 输出: false
Object.freeze(obj)
冻结一个对象,这意味着你不能向这个对象添加新的属性,不能删除现有属性,不能修改属性的可枚举性、可配置性、可写性,以及属性的值。
let obj = { prop: 42 };
Object.freeze(obj);
obj.prop = 33;
console.log(obj.prop); // 输出: 42
obj.newProp = "It's new";
console.log(obj.newProp); // 输出: undefined