ES5中的Object的两种常用的静态方法

3 篇文章 0 订阅

Object的扩展方法常用的两种

1.Obeject.create(prototype,descritors)

Obeject.create(prototype,descritors):将新的对象为原型创建新的对象。该方法接受两个参数
1.prototype:将新的对象为原型
2.descritors:为新的对象添加新的属性,包含描述性属性
value:属性值,
2.1writetable:是否可修改的新的属性值;默认false,不可修改;
2.2configurable:是否可删除新的属性;默认false,不可删除;
2.3ennumerable:是否可用枚举;默认false,不可枚举

直接进入正题,上代码
// Obeject.create(prototype,descritors)
var obj = {name:'kobe',age:38}
var obj1 = {}
obj1 = Object.create(obj,{ //将obj最为boj1的原型对象,并且给obj1自身设置属性
	sex: {
		value: '男',
		writetable: true, //表示该属性值可以进行修改
		configurable: true, //表示可以对该属性进行删除
		ennumerable: true, //表示可以对属性进行枚举
	}
})
console.log(obj1) 
obj1.sex = '女'
console.log(obj1.sex) //女
for(var i in obj1) {
console.log(i) //sex
}
delete obj1.sex
console.log(obj1.sex) // {}


/*{sex: "男"}
sex: "男"
__proto__:
name: "kobe"
age: 38
*/

2.Obeject.defineProperties(object,descritors)

Obeject.defineProperties(object,descritors):可以为指定对象添加扩展属性(VUE数据双向绑定,就是利用ES5的Objec.defineProperties方法),该方法接受两个参数,
1.objec:指定的对象,
2.descritors:描述性属性
2.1get()方法,获取扩展属性,返回扩展属性值;
2.2set(val)方法,只要扩展属性值发生改变就会触发,参数就是修改后的值

直接进入正题,上代码
// Obeject.defineProperties(object,descritors)
var obj = { firstName: '123', scondName: '456' }
Obeject.create(obj, { //给obj添加一个扩展属性fullName
	fullName: {
		get: funcation() { //获取扩展属性,此处的this指向obj
			reture this.firstName + this.scondName
		},
		set: funcation(val) { //监听扩展属性的变化,就会触发该方法,接受的参数就是修改后的扩展属性值
			console.log(val) //val就是接受修改后的值 '77 99'
			var arr = val.split(' ')
			this.firstName = arr[0]
			this.scondName = arr[1]
		}
	}
})
console.log(obj.fullName) //'123456'
obj.fullName = '77 99' //修改扩展属性值
console.log(obj.fullName) //'7799'

/*
我只是前端小学生一名,写的不好请多多担待,后面慢慢补充es5 es6 es7的相关内容

*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值