Object数据属性和访问器属性
// 数据属性 var obj = { name: 'tom' } // 查看数据属性 Object.getOwnPropertyDescriptor(obj, 'name') // {value: "tom", writable: true, enumerable: true, configurable: true} // 修改数据属性 // Object.defineProperty(obj, prop, descriptor) // Object.defineProperties(obj, props) Object.defineProperty(obj, 'name', { value: "jack", // 属性值 writable: false, // 是否可修改属性值 enumerable: false, // 是否可for-in遍历 configurable: false // 是否可再修改数据属性 }) // {name: 'jack'} Object.defineProperties(obj, { newName: { value: "mack", writable: false, enumerable: false, configurable: false } }) // {newName: 'mack'} // 访问器属性 var obj = { year: 2018 } // 定义访问器属性 Object.defineProperties(obj, { newYear: { get: function() { return this.year }, set: function(newValue) { if(newValue !== this.year) { this.year = newValue } } } }) // 查看访问器属性 Object.getOwnPropertyDescriptor(obj,'newYear') // {get: ƒ, set: ƒ, enumerable: true, configurable: true} // 修改访问器属性可以改变对象内其他属性 obj.newYear = 2019 // {year: 2019}