ES5給Object擴展了一些靜態(tài)方法壮锻,常用的有2個:
1爹谭、Object.create(prototype,[description])
作用:以指定對象為原型創(chuàng)建新的對象。
為新的對象指定新的屬性错览,并對屬性進行描述档押。
-value:指定值。
-writable:標識當前屬性值是否是可修改的锅论,默認中false讼溺。
-configurable:標識當前屬性是否可以被刪除,默認是fasle最易。
-enumerable:標識當前屬性是否能用for in 枚舉 默認為false怒坯。
const person = { username: 'Lily', age: '18' }
let obj = {}
obj = Object.create(person, {
sex: {
value: '男',
writable: true,
enumerable: true,
configurable: true,
}
})
obj.sex = '女'
// delete obj.sex
console.log(obj)
for (let object in obj) {
console.log(object)
}
2炫狱、Object.defineProperties(object,description)
作用:為指定對象定義擴展多個屬性。
-get:用來獲取當前屬性值的回調(diào)函數(shù)剔猿。
-set:修改當前屬性值的觸發(fā)函數(shù)视译,并且實參即為修改后的值。
-存儲器屬性:setter,getter一個用來存值归敬,一個用來取值酷含。
let names = { firstName: 'Lily', lastName: 'Jack' }
Object.defineProperties(names, {
fullName: {
get: function () {
console.log('get()')
return `${this.firstName} ${this.lastName}`
},
set: function (data) {
console.log('set()')
let names = data.split(' ')
this.firstName = names[0]
this.lastName = names[1]
}
}
})
names.fullName = 'Luck Bull'
console.log(names.fullName)
console.log(names)
3、對象本身的get set 方法
get propertyName() 用來得到當前屬性值的回調(diào)函數(shù)
set propertyName() 用來監(jiān)視當前屬性值變化的回調(diào)函數(shù)
let user = {
firstName: 'curry',
lastName: 'stephen',
get fullName () {
return `${this.firstName} ${this.lastName}`
},
set fullName (data) {
let users = data.split(' ')
this.firstName = users[0]
this.lastName = users[1]
}
}
console.log(user.fullName)
user.fullName = 'Luily Luck'
console.log(user.fullName)