1. 程式人生 > 實用技巧 >JavaScript 中,這幾個操作物件的方法很實用

JavaScript 中,這幾個操作物件的方法很實用

本文整理了 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}