Object扩展|Object扩展 (Object Extension)
ES5给Object扩展了一些静态方法,常用的有2个:
1、Object.create(prototype,[description])
作用:以指定对象为原型创建新的对象。
为新的对象指定新的属性,并对属性进行描述。
-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:用来获取当前属性值的回调函数。
-set:修改当前属性值的触发函数,并且实参即为修改后的值。
-存储器属性: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)
【Object扩展|Object扩展 (Object Extension)】3、对象本身的get set 方法
文章图片
******
get propertyName() 用来得到当前属性值的回调函数
set propertyName() 用来监视当前属性值变化的回调函数
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)
文章图片
******
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- iOS面试题--基础
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- performSelectorOnMainThread:withObject:waitUntilDone:参数设置为NO或YES的区别
- Objective-c
- iOS14|iOS14 Widget小组件开发(Widget Extension)
- PHP|PHP 扩展开发检测清单(扩展开发必读)
- 在Objective-C的Category中使用属性的懒加载
- IE|IE 11 处理 object-fit: contain 问题
- Python|Python TypeError: 'module' object is not callable 原因分析