Object.create()方法是ECMAScript 5中新增的方法,这个方法用于创建一个新对象。被创建的对象继承另一个对象的原型,在创建新对象时可以指定一些属性。
语法: Object.create(proto[,propertiesObject])
proto: 对象,要继承的原型
propertiesObject: 对象,可选参数,为新创建的对象指定属性对象。该属性对象可能包含以下值:
属性 | 说明 |
---|---|
configurable | 表示新创建的对象是否是可配置的,即对象的属性是否可以被删除或修改,默认false |
enumerable | 对象属性是否可枚举的,即是否可以枚举,默认false |
writable | 对象是否可写,是否或以为对象添加新属性,默认false |
get | 对象getter函数,默认undefined |
set | 对象setter函数,默认undefined |
注意,使用Object.create()方法创建对象时,如果不是继承一个原有的对象,而是创建一个全新的对象,就要把proto设置为null。
来看一个简单的应用
// 基类 function Site() { this.name = 'Site'; this.domain = 'domain'; } Site.prototype.create = function(name, domain) { this.name = name; this.domain = domain; }; // 子类 function Itbilu() { Site.call(this); //调用基类的构造函数 } // 继承父类 Itbilu.prototype = Object.create(Site.prototype); // 创建类实例 var itbilu = new Itbilu(); itbilu instanceof Site; // true tbilu instanceof Itbilu; // true itbilu.create('IT笔录', 'itbilu.com'); itbilu.name; // 'IT笔录' itbilu.domain; // 'itbilu.com'