创建对象
- JavaScript 对象是关联数组。
- 在 ES6 中及之后的版本中使用 Map 类通常比使用普通对象更好。
- 对象自变量
- new 关键字
- 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)) // 防止意外修改