Object
Creating an Object
literals
- 描述:创建一个新对象,其原型为
Object.prototype
let empty = {}
let point = { x: 0, 'y': 0 }
new
- 描述:创建一个新对象,其原型为
fn.prototype
- 语法:
new fn()
let empty = new Object() // 等价于 {}
let empty = new Array() // 等价于 []
create()
- 描述:创建一个新对象,其原型为
proto
- 语法:
Object.create(proto, props?)
Object.create({ a: 1 }) // 原型为 { a: 1 }
Object.create(Object.prototype) // 等价于 {}
Object.create(null) // 无原型对象
Accessing an Object
subscript
- 描述:访问对象属性
let obj = { a: 1 }
obj.a // 1
obj['a'] // 1
Modifying an Object
subscript
- 描述:修改对象属性
let obj = { a: 1 }
obj.a = 2
obj['a'] = 2
delete
- 描述:删除对象的自有属性
let obj = { a: 1 }
delete obj.a // true
Checking Object Props
hasOwn()
- 描述:检查对象的自有属性是否存在
- 语法:
Object.hasOwn(obj, prop)
let obj = Object.create({ a: 1 })
obj.b = 2
Object.hasOwn(obj, 'a') // false, 继承属性
Object.hasOwn(obj, 'b') // true, 自有属性
in
- 描述:检查对象的自有属性和继承属性是否存在
let obj = Object.create({ a: 1 })
obj.b = 2
'a' in obj // true, 继承属性
'b' in obj // true, 自有属性
Enumerating an Object
keys()
- 描述:返回一个数组,包含了对象自有可枚举属性的键
- 语法:
Object.keys(obj)
Object.keys([1, 2, 3]) // ['0', '1', '2']
Object.keys({ a: 1, b: 2 }) // ['a', 'b']
values()
- 描述:返回一个数组,包含了对象自有可枚举属性的值
- 语法:
Object.values(obj)
Object.values([1, 2, 3]) // [1, 2, 3]
Object.values({ a: 1, b: 2 }) // [1, 2]
entries()
- 描述:返回一个数组,包含了对象自有可枚举属性的键值对
- 语法:
Object.entries(obj)
Object.entries([1, 2, 3]) // [['0', 1], ['1', 2], ['2', 3]]
Object.entries({ a: 1, b: 2 }) // [['a', 1], ['b', 2]]
Copying an Object
assign()
- 描述:将
source
的自有可枚举属性复制到target
,并返回修改后的target
- 语法:
Object.assign(target, ...sources)
// 拷贝对象
Object.assign({}, { a: 1 }) // { a: 1 }
// 覆盖属性
Object.assign({ a: 1 }, { a: 0, b: 0 }) // { a: 0, b: 0 }
spread operator
- 描述:将
source
的自有可枚举属性复制到target
,并返回修改后的target
// 后面属性覆盖前面属性
let source = { a: 0, b: 0 }
let target = { a: 1, ...source } // { a: 0, b: 0 }
let target = { ...source, a: 1 } // { a: 1, b: 0 }
Prototype Methods
getPrototypeOf()
- 描述:返回对象的原型
- 语法:
Object.getPrototypeOf(obj)
let obj = Object.create({ a: 1 })
Object.getPrototypeOf(obj) // { a: 1 }
setPrototypeOf()
- 描述:修改对象的原型
- 语法:
Object.setPrototypeOf(obj, proto)
let obj = Object.create({ a: 1 })
Object.setPrototypeOf(obj, { b: 2 })
Object.getPrototypeOf(obj) // { b: 2 }
constructor
- 描述:指向构造函数
- 语法:
obj.constructor
function Animal() {}
let obj = new Animal()
obj.constructor // Animal