JavaScript 中,這幾個操作物件的方法很實用
阿新 • • 發佈:2020-08-27
本文整理了 6 個比較實用的操作物件的方法。
Object.create()
以引數為原型,建立一個新物件例項。
const user = { name: 'kylin', age: 18, gender: '女', work: 'dev', say() { console.log(`姓名:${this.name} ,年齡:${this.age} ,性別:${this.gender}`); } }; const my = Object.create(user); my.say(); // 姓名:kylin ,年齡:18 ,性別:女 my.name = 'Tom'; my.year= '2020'; console.log(my.name); // Tom console.log(my.year); // 2020
Object.assign()
將所有可列舉的屬性從一個或多個物件合併 (複製) 到一個新物件上。
Object.assign() 方法有 2 個引數,第 1 個引數是目標物件,第 2 個引數是源物件。如果有同名屬性,後面物件的屬性會覆蓋前面物件的屬性。
const userBasic = { name: 'kylin', age: 20, }; const userInfo = { age: 18, gender: '女', work:'dev', say() { console.log(`姓名:${this.name} ,年齡:${this.age} ,性別:${this.gender} ,工作:${this.work}`); } }; const user = Object.assign(userInfo, userBasic); user.say(); // 姓名:kylin ,年齡:20 ,性別:女 ,工作:dev
也可以合併成一個新物件。
const userBasic = { name: 'kylin', age: 18, gender: '女', say() { console.log(`姓名:${this.name} ,年齡:${this.age} ,性別:${this.gender}`); } }; const user = Object.assign({}, userBasic); user.say(); // 姓名:kylin ,年齡:18 ,性別:女
Object.keys()
返回包含物件自身可列舉的所有屬性組成的陣列。
const user = { name: 'kylin', age: 18 }; Object.defineProperty(user, 'gerder', { value: "女", enumerable: false // 不可列舉 }); console.log(Object.keys(user)); // ["name", "age"]
Object.values()
返回包含物件自身所有可列舉屬性的值組成的陣列,值的順序與使用 for...in 迴圈的順序相同。
const user = { name: 'kylin', age: 18 }; Object.defineProperty(user, 'gerder', { value: "女", enumerable: false // 不可列舉 }); console.log(Object.values(user)); // ["kylin", 18]
Object.entries()
將物件的屬性和值 (鍵和值) 用陣列的形式表現出來。即返回包含物件自身可列舉屬性的鍵值對組成的陣列。
const user = { name: 'kylin', age: 18 }; const info = Object.entries(user); console.log(info); // [['name', 'kylin'], ['age', 18]]
Object.fromEntries()
相當於 Object.entries() 方法的逆操作,將鍵值對形式的陣列轉換成物件。
const user = Object.fromEntries([ ['name', 'kylin'], ['age', 18] ]); console.log(user); // {name: "kylin", age: 18}