报错
用Object.defineProperties
定义属性时报错: Uncaught TypeError: Property description must be an object: m
解决
这里的defineProperties
应该改为defineProperty
defineProperty 和 defineProperties 的区别
-
Object.defineProperty
- 该方法会直接在一个对象上定义 一个 新属性,或者修改一个对象的现有属性
- 该方法有 三个 参数
Object.defineProperty(obj, prop, descriptor)
- obj: 要定义属性的对象。
- prop: 要定义或修改的属性的名称或 Symbol 。
- descriptor: 要定义或修改的属性描述符。
let value = "这是值", obj = {} Object.defineProperty(obj, key, { configurable: false, enumerable: true, get() { return value }, set(newVal) { value = newValue } })
-
Object.defineProperties
- 方法直接在一个对象上定义 一个或多个 新的属性或修改现有属性
- 该方法有 两个
Object.defineProperties(obj, props)
- obj: 在其上定义或修改属性的对象。
- props: 要定义其可枚举属性或修改的属性描述符的对象
let value = "这是值", obj = {} Object.defineProperties(obj, { username: { value: '小明', configurable: false, writable: true }, password: { value: '***', configurable: true, enumerable: true } })