create

Object.create():
var newObj=Object.create(father,{扩展的新属性})
创建一个新对象newObj,继承father,并为newObj扩展新的自有属性
何时: 只要继承一个现有对象,创建一个新的子对象时
相当于: var newObj={};
newObj.__proto__=father;
Object.defineProperties(newObj,{
扩展的新属性
})



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//笔试:一个方法何时定义在原型对象中,何时定义在构造函数上
//定义在原型对象中的方法,只能被本类型的子对象调用
//何时:如果一个方法,只希望本类型的子对象才能调用时,就要保存在原型对象中
//定义在构造函数上的方法,不需要任何子对象,就可以直接调用
//何时:只要希望所有对象都能使用该方法时,就要江方法直接定义在构造函数上
//比如:Array.isArray(obj)
// Object.create(father);
if(typeof Object.create!=="function")
Object.create=function (father,props) {
//创建新对象
//继承father
function F() {}//媳妇
F.prototype=father;//媳妇->father
var obj=new F();//生小孩
F=null;//释放媳妇
//如果有第二个参数
if(props){
//就将第二个参数中的属性添加到新对象中
//Object.defineProperties(obj,props);
//遍历props中每个属性
for(var key in props){
//为obj添加新属性
//属性名为key
//属性值为props中key属性的value值
obj[key]=props[key].value;
}
}
return obj;
}

var father={
bal:10000000,
car:"infiniti"
}
var hmm=Object.create(father,{
phone:{
value:"iPhone8plus",
writable:true,
enumerable:true,
configurable:true
}
});
for(var key in hmm){
document.write(key+":"+hmm[key]+"<br>");
}
</script>
</body>
</html>
posted @ 2018-07-29 17:45  BugLess000  阅读(232)  评论(0编辑  收藏  举报