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'