var person = {}
Object.defineProperty(person, 'name', {
configurable: true,
value: '张三'
})
console.log('1', person.name)
Object.defineProperty(person, 'name', {
configurable: false,
value: '李四'
})
console.log('2', person.name)
Object.defineProperty(person, 'name', {
writable: false
})
JSON.stringify(Object.getOwnPropertyDescriptor(person, 'name'))
delete person.name
person.name = '王五'
console.log('3', person.name)
console.log('4', JSON.stringify(Object.getOwnPropertyDescriptor(person, 'name')))
var book = {
_year: 2004,
version: 1
}
Object.defineProperty(book, "year", {
get: function() {
return this._year
},
set: function (newValue) {
this.version++
this._year = newValue
}
})
console.log(book._year)
book.year = 2005
console.log(book.version, book.year)
Object.defineProperties(book, {
name: {
enumerable: true,
value: '作者'
},
_price: {
writable: true,
configurable: true,
value: 100
},
price: {
enumerable: true,
get: function () {
return this._price
},
set: function(newV) {
this._price = newV
}
}
})
book.price = 200
console.log(JSON.stringify(book), book.name, book.price)
console