Appearance
对象
详细介绍对象的学习方法
构造器
对象控制
es5 暴露的一系列方法用于控制对象属性的增删改查。 核心方法如下
特性 | 默认行为 | preventExtensions | seal | freeze |
---|---|---|---|---|
添加属性 | ✅ | ❌ | ❌ | ❌ |
删除属性 | ✅ | ✅ | ❌ | ❌ |
修改属性 | ✅ | ✅ | ✅ | ❌ |
属性
对象由一系列属性组成,属性值可以是基础类型也可以是引用类型。 ECMAScript 规定存在两种类型的属性
- 数据属性 用于存储数据,数据属性包含四个值
- value 属性值
- enumerable 是否可枚举
- configurable 是否可配置
- writable 是否可写
- 访问器属性
- get 设置读取器
- set 设置设置器
- enumerable 是否可枚举
- configurable 是否可配置
创建方法
- 对象字面量形式
{}
- 采用 new 方法
- Object.create 自定义原型对象
方法清单
核心属性
类属性
对象内部隐藏有类属性信息,当调用 toString
方法时会返回 '[object xxx]' 的格式。 可以拿到此属性值。
Object.create
- 入参
proto
实例化对象需要继承的原型propertiesObject
属性描述对象
- return
- 返回实例化的新对象
典型使用场景
修改封锁
该示例取自 js 权威指南第六版例 6.1
假设一个库暴露了一个对象,第三方需要对象进行额外操作,为了避免操作直接影响对象本身。 采用 inherit
函数继承原始对象,此时第三方修改只会影响继承对象避免直接对原始对象的修改而造成的污染。
Object.keys
用于获取对象所有自有属性的键名。