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

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的相关内容

*/

你可能感兴趣的:(ES5,前端)