Object.create(parent):
三件事: 1. 创建一个对象
2. 继承指定父对象
3. 为新对象扩展新属性
何时使用create: 希望在创建对象时就提前指定继承的父对象,并同时扩展新属性时。
作业: 完成课堂练习:
1. 创建hmm对象继承father,同时扩展phone属性
三件事: 1. 创建一个对象
2. 继承指定父对象
3. 为新对象扩展新属性
何时使用create: 希望在创建对象时就提前指定继承的父对象,并同时扩展新属性时。
作业: 完成课堂练习:
1. 创建hmm对象继承father,同时扩展phone属性
2. Object.create的实现原理:
<span style="font-size:18px;">
//不可能实现所有浏览器都支持Objecet.create,一部分可重写
//Objecet.create 的实现步骤3
//自定义Object.create方法
if(Object.mycreate===undefined){
Object.mycreate=function(parent,props){
<span style="background-color: rgb(255, 102, 102);">//1:创建一个新对象
var obj=new Object();
//2:设置新对象继承parent
Object.setPrototypeOf(obj,parent);//IE9+
//3:为新对象扩展属性</span>
Object.defineProperties(obj,props);//IE9+ ES5的新标准
//返回新对象
return obj;
}
}
var father={bal:1000,car:"=b="}
//var hmm=Object.create(father);
var hmm=Object.mycreate(father,{//create调用的也是defineproperty
phone:{//默认为false
value:"肾6s",
writable:true,
enumertable:true,
configurable:true.
},
});
console.log(hmm.hasOwnProperty("bal"));//false,可以用,但是存到父类那里
console.log(hmm.bal);//子继承父,也可扩展自己的属性
console.log(hmm.car);
console.log(hmm.phone);</span>