1. Object.is() 方法:
Object.is() 方法用于比较两个值是否严格相等,类似于 ===,但处理一些特殊情况,例如 NaN 和 -0:
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(-0, 0)); // false
2. Object.assign() 方法:
Object.assign() 方法用于将一个或多个源对象的属性复制到目标对象,也可用于合并多个对象:
const target = { a: 1, b: 2 };
const source = { b: 3, c: 4 };
Object.assign(target, source);
console.log(target); // 输出:{ a: 1, b: 3, c: 4 }
3. Object.keys()、Object.values() 和 Object.entries() 方法:
这些方法分别用于获取对象的键、值和键值对:
const person = { name: "John", age: 25 };
console.log(Object.keys(person)); // 输出:['name', 'age']
console.log(Object.values(person)); // 输出:['John', 25]
console.log(Object.entries(person)); // 输出:[['name', 'John'], ['age', 25]]
4. Object.getOwnPropertyDescriptors() 方法:
Object.getOwnPropertyDescriptors() 方法用于获取对象所有自身属性(不仅限于可枚举属性)的描述符:
const obj = {
name: "John",
age: 25
};
const descriptors = Object.getOwnPropertyDescriptors(obj);
console.log(descriptors.name.writable); // true
console.log(descriptors.age.enumerable); // true
5. Object.setPrototypeOf() 方法:
Object.setPrototypeOf() 方法用于设置对象的原型(prototype):
const cat = { meow() { console.log("Meow!"); } };
const kitten = { purr() { console.log("Purr!"); } };
Object.setPrototypeOf(kitten, cat);
kitten.meow(); // 输出:Meow!
6. Object.freeze()、Object.seal() 和 Object.preventExtensions() 方法:
这些方法分别用于冻结对象、密封对象和阻止对象的扩展:
const obj = { name: "John" };
Object.freeze(obj);
// 尝试修改对象
obj.age = 25; // 不会生效
console.log(obj); // 输出:{ name: "John" }
Object.seal(obj);
// 尝试删除属性
delete obj.name; // 不会生效
console.log(obj); // 输出:{ name: "John" }
Object.preventExtensions(obj);
// 尝试添加新属性
obj.city = "New York"; // 不会生效
console.log(obj); // 输出:{ name: "John" }
这些新增方法使得在处理对象时更为灵活和方便。
转载请注明出处:http://www.zyzy.cn/article/detail/4671/ES6