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) }

Object扩展|Object扩展 (Object Extension)
文章图片
******
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)
文章图片
******
【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)

Object扩展|Object扩展 (Object Extension)
文章图片
******

    推荐阅读