1:Object.create()用法
使用现有对象创建包含它的新对象,将该对象分配给新对象的原型上。
let obj = {
name:'anny'
}
let newObj = Object.create(obj);
console.log(newObj.name). //输出:anny
注意清单:
- 第一个参数只能是Object类型或者null,否则会报错
- 第二个参数是可选的,类似于 Object.defineProperties 的第二个参数。
let obj = {
name:'anny'
}
let newObj = Object.create(obj,{
name:{
value:"tony",
writable:true //是否可写
}
});
console.log(newObj.name) //输出tony
2:Object.create()原理规范
2.1:规范
- 判断是否为Object或者null
- 创建一个新对象
- 将新对象的原型指向传入的对象
- 判断第二个参数Properties为真
- 返回新创建的对象
2.2:实现
function myCreate(obj,Properties){
//判断是否为Object或者null
if(!(obj instanceof Object)&&obj!==null){
throw TypeError
}
//创建一个新对象(等价于new Object())
let newObj = {}
//将新对象的原型指向传入的对象
newObj.__proto__ = obj;
//如果第二个参数Properties为真
if(Properties&&Properties!==undefined){
Object.defineProperties(newObj,Properties)
}
//返回新创建的对象
return newObj;
}
未经本人同意请勿转载