ECMA5 Object.create

来源:互联网 发布:java正则表达式 可选 编辑:程序博客网 时间:2024/04/30 12:14

Object.create(prototype,descriptors) 是E5中提出的一种新的对象创建方式。
     
 1.参数:
prototype是要继承的原型,如果不是一个子函数,可以传一个null。
descriptors是对象的属性描述符,这个参数是可选的。数据属性是可获取可设置的属性,数据属性描述符包括value,writable,configurable和enumerable特性。如果没有指定,后三个值默认为false。访问器属性包括configurable,enumerable,get和set特性。
  
2.返回的值

一个以prototype为原型并且包含指定属性的新对象。


3.异常

包含以下三种情况:

 (1)prototype不是对象并且不是null
   
 (2)descriptors里面具有value和writable特性,同时还要set和get特性

 (3)descriptors里面具有不是函数的set和get特性

4.示例

(1)
  

    var newObj = Object.create(null, {            size: {                value: "large",                enumerable: true            },            shape: {                value: "round",                enumerable: true            }        });for (var item in newObject){       console.log(item);   }//size//shape


 (2)
 
function Person(name){   this.name=name;} Person.prototype.showName=function(){     console.log(this.name);}var  person1=Object.create(Person.prototype,{  name:{    value:"vuturn",    enumerable:true,    writable:true   },job:{value:"software engineer",enumerable:true}});person1.showName();//vuturnperson1.name="John";person1.showName();//Johnperson1.job="doctor";console.log(person1.job);//software engineer

  (3)实现继承
function SuperType(name){  this.name=name;}SuperType.prototype.showName=function(){  console.log(this.name);}function SubType(name){   SuperType.call(this.name);}SubType.prototype=Object.create(SuperType.prototype);var person=new SubType("vuturn");person instanceof SubType;person instanceof SuperType;





0 0
原创粉丝点击