跳到主要内容

创建对象

  • JavaScript 对象是关联数组。
  • 在 ES6 中及之后的版本中使用 Map 类通常比使用普通对象更好。
  1. 对象自变量
  2. new 关键字
  3. Object.create()

1. 对象自变量

let empty = {} // 没有属性的对象
let point = { x: 0, y: 0 } // 包含两个数值属性
let book = {
'main title': 'JavaScript', // 属性名包含空格
'sub-title': '潘文山',
for: 'all audiences',
author: {
// 这个属性的值本身也是一个对象
firstname: 'David',
surname: 'Flanagan',
},
}

2. new 关键字

let o = new Object() // 创建一个空对象,与{}相同
let a = new Array() // 创建一个空数组,与[]相同
let d = new Date() // 创建一个表示当前时间的日期对象
let m = new Map() // 创建一个映射对象,用于存储 键/值 映射

3. Object.create()

let o1 = Object.create({ x: 1, y: 2 }) // o1继承属性x和y
console.log(o1.x + o1.y) //3
let o2 = Object.create(null) // o2不继承任何属性或方法
let o3 = Object.create(Object.prototype) // o3 与{} 或者new Object()类似

原型

几乎每个 JavaScript 对象都有另一个与之关联的对象被称为原型(prototype),第一个对象从这个原型继承属性。

  • 通过对象字面量创建的所有对象都有相同的原型对象。
  • 可以通过 Object.prototype 引用这个原型对象。
  • Object.create()的一个用途是防止对象被某个第三方库函数意外(但非恶意)修改。
防止意外修改
let o = { x: '不要修改这个值' }
library.function(Object.create(o)) // 防止意外修改