Object.create()
此方法可以建立一個物件例項,併為其指定原型物件和屬性。
為物件例項新增屬性,這一點沒有任何異議,給物件例項指定原型物件要特別注意一下,也就是設定物件的__proto__屬性值,千萬不要誤認為是建構函式的prototype原型物件。
關於__proto__參閱prototype 和 __proto__一章節。
更多Object物件內容參閱JavaScript Object 物件一章節。
ES5新增此方法。
語法結構:
[JavaScript] 純文字檢視 複製程式碼Object.create(prototype, descriptors)
引數解析:
(1).prototype:必需,被建立物件的原型物件。
(2).descriptors:可選,包含一個或多個屬性描述符的 JavaScript 物件,用來規定要被新增到物件的屬性,可以分為兩類,資料屬性和訪問器屬性,關於這兩類屬性的更多內容可以參閱相關連結。
相關文章:
(1).訪問器屬性可以參閱JavaScript get與set訪問器一章節。
(2).資料屬性可以參閱configurable、enumerable和writable一章節。
瀏覽器相容:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).opera瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let obj=Object.create(null,{ webName:{ value:"螞蟻部落", enumerable:true }, url:{ value:"softwhy.com", enumerable: true } }); console.log(obj.webName); console.log(obj.__proto__);
程式碼執行效果截圖如下:
程式碼分析如下:
(1).利用Object.create方法建立一個物件,此物件的原型物件為null,也就是沒有原型物件。
(2).為此物件新增兩個屬性,webName和url。
__proto__屬性指向物件例項的原型物件,具體參閱prototype 和 __proto__一章節。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let proto = { url:"www.softwhy.com" } let obj=Object.create(proto,{ webName:{ value:"螞蟻部落", enumerable:true }, url:{ value:"softwhy.com", enumerable: true } }); console.log(obj.webName); console.log(obj.__proto__);
程式碼執行效果截圖如下:
上述程式碼利用Object.create方法建立一個物件,物件的原型是proto物件。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let proto = { url:"www.softwhy.com" } let obj=Object.create(proto,{ webName:{ value:"螞蟻部落", enumerable:true }, age:{ get () {return "螞蟻部落"+this._Age+"歲了";}, set (value) {this._Age = value;} } }); obj.age=4; console.log(obj.age);
程式碼執行效果截圖如下:
上面程式碼演示了為新物件新增了一個訪問器屬性age。