1. 前面我说到属性特性,有枚举性(enumerable) 可写性(wirteable) 值(value) 可配置性(configurable) 如何我们在复制属性是像把属性特性一起复制?
我们来写一个extend函数
Object.defineProperty(Object.prototype,"extend",{
wirteable:false,
enumerable:false,
configurable:false,
value:function(obj){
let key = Object.getOwnPropertyNames(obj);//获取自身属性,包括不可枚举属性
for(let i = 0; i < key.length; i++){
if( key[i] in this) contiune; //如果当前对象也有属性,则跳过
let character = Object.getOwnPropertyDescriptor(obj,key[i]);//获取属性特性
Object.defineProperty(this,key[i],character);//存入当前对象
}
}
})