使用 ES8 对行对象进行操作的 8 个新方法(延伸阅读)
前言:
JavaScript 是一种动态类型、解释执行的语言,具有灵活性和宽泛的应用范围。而 ES8 是 ECMAScript 的第 8 版本,也是目前最新的 JavaScript 标准。与 ES5 和 ES6 相比,ES8 中新增了很多新的方法,其中针对行对象的操作也有很多新增的方法。在本文中,我们将一一介绍 ES8 中这些新的方法。
一、Object.entries()
Object.entries() 方法返回一个由给定对象自身可枚举属性的键值对数组。该数组中的元素是 [key, value] 键值对的形式。ES8 的这个方法可以方便地实现对象的遍历操作,将对象转化为一个数组。
示例代码:
let obj = { name: 'Tom', age: 25, gender: 'male' };
let arr = Object.entries(obj);
console.log(arr); // output: [ ['name', 'Tom'], ['age', 25], ['gender', 'male'] ]
二、Object.values()
Object.values() 方法与 Object.entries() 方法很像,只不过返回的是对象属性的值组成的数组。
示例代码:
let obj = { name: 'Tom', age: 25, gender: 'male' };
let arr = Object.values(obj);
console.log(arr); // output: ['Tom', 25, 'male']
三、Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors() 方法返回指定对象所有自身属性的描述对象。即使该属性存在访问器,也会返回相应的 get 和 set 函数。
示例代码:
let obj = { name: 'Tom', age: 25 };
let descriptors = Object.getOwnPropertyDescriptors(obj);
console.log(descriptors.name); // output: { value: 'Tom', writable: true, enumerable: true, configurable: true }
四、Object.defineProperties()
Object.defineProperties() 方法为对象定义多个属性。这个方法和 Object.defineProperty() 方法相比,可以定义多个属性,而不是一个。
示例代码:
let obj = {};
Object.defineProperties(obj, { name: { value: 'Tom', writable: true }, age: { value: 25, writable: false } });
console.log(obj.name); // output: Tom
console.log(obj.age); // output: 25
五、Object.fromEntries()
Object.fromEntries() 方法从给定的键值对数组中返回一个对象。与 Object.entries() 相反,这个方法把键值对数组转化成一个对象。
示例代码:
let entries = [ ['name', 'Tom'], ['age', 25], ['gender', 'male'] ];
let obj = Object.fromEntries(entries);
console.log(obj); // output: { name: 'Tom', age: 25, gender: 'male' }
六、Object.setPrototypeOf()
Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即,内部 [[Prototype]] 属性)到另一个对象或 null。
示例代码:
let person = {
introduce() {
console.log(My name is ${this.name}, age is ${this.age} years old.
);
}
};
let student = { name: 'Tom', age: 25 };
Object.setPrototypeOf(student, person);
student.introduce(); // output: My name is Tom, age is 25 years old.
七、Object.values() 和 Set() 的组合
利用 Object.values() 和 Set() 的组合,可以去除一个数组中的重复值。
示例代码:
let arr = [1, 2, 3, 4, 3, 2, 1];
let uniqueArr = [...new Set(Object.values(arr))];
console.log(uniqueArr); // output: [1, 2, 3, 4]
八、Object.assign() 与对象合并
Object.assign() 方法将所有可枚举的属性的值从一个或多个源对象复制到目标对象。如果目标对象中的属性在源对象中存在,则会被源对象中的属性覆盖。ES8 中,Object.assign() 方法可以合并多个对象。
示例代码:
let obj1 = { a: 1, b: 2 }; let obj2 = { c: 3, d: 4 }; let obj3 = { e: 5 };
let obj = Object.assign({}, obj1, obj2, obj3);
console.log(obj); // output: { a: 1, b: 2, c: 3, d: 4, e: 5 }
总结:
在 ES8 中,新增了很多针对行对象的新方法,这些新的方法可以让我们更方便地操作对象。在实际开发过程中,熟练地掌握这些方法可以大大提高我们的开发效率。希望本文能够对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65855492d2f5e1655dffc618