一種新的javascript對(duì)象創(chuàng)建方式Object.create()
Object.create() 是什么?
Object.create(proto [, propertiesObject ]) 是E5中提出的一種新的對(duì)象創(chuàng)建方式,第一個(gè)參數(shù)是要繼承的原型,如果不是一個(gè)子函數(shù),可以傳一個(gè)null,第二個(gè)參數(shù)是對(duì)象的屬性描述符,這個(gè)參數(shù)是可選的。
例如:
function Car (desc) { this.desc = desc; this.color = "red"; } Car.prototype = { getInfo: function() { return 'A ' + this.color + ' ' + this.desc + '.'; } }; //instantiate object using the constructor function var car = Object.create(Car.prototype); car.color = "blue"; alert(car.getInfo());
結(jié)果為:A blue undefined.
1、propertiesObject 參數(shù)的詳細(xì)解釋:(默認(rèn)都為false)
數(shù)據(jù)屬性:
- writable:是否可任意寫
- configurable:是否能夠刪除,是否能夠被修改
- enumerable:是否能用 for in 枚舉
- value:值
訪問(wèn)屬性:
- get(): 訪問(wèn)
- set(): 設(shè)置
2、例子:直接看例子就知道怎么用。
<!DOCTYPE html> <html> <head> <title>yupeng's document </title> <meta charset="utf-8"/> </head> <body> <script type="text/javascript"> var obj = { a:function(){ console.log(100) }, b:function(){ console.log(200) }, c:function(){ console.log(300) } } var newObj = {}; newObj = Object.create(obj,{ t1:{ value:'yupeng', writable:true }, bar: { configurable: false, get: function() { return bar; }, set: function(value) { bar=value } } }) console.log(newObj.a()); console.log(newObj.t1); newObj.t1='yupeng1' console.log(newObj.t1); newObj.bar=201; console.log(newObj.bar) function Parent() { } var parent = new Parent(); var child = Object.create(parent, { dataDescriptor: { value: "This property uses this string as its value.", writable: true, enumerable: true }, accessorDescriptor: { get: function () { return "I am returning: " + accessorDescriptor; }, set: function (val) { accessorDescriptor = val; }, configurable: true } }); child.accessorDescriptor = 'YUPENG'; console.log(child.accessorDescriptor); var Car2 = function(){ this.name = 'aaaaaa' } //this is an empty object, like {} Car2.prototype = { getInfo: function() { return 'A ' + this.color + ' ' + this.desc + '.'; } }; var newCar = new Car2(); var car2 = Object.create(newCar, { //value properties color: { writable: true, configurable:true, value: 'red' }, //concrete desc value rawDesc: { writable: true, configurable:true, value: 'Porsche boxter' }, // data properties (assigned using getters and setters) desc: { configurable:true, get: function () { return this.rawDesc.toUpperCase(); }, set: function (value) { this.rawDesc = value.toLowerCase(); } } }); car2.color = 'blue'; console.log(car2.getInfo()); car2.desc = "XXXXXXXX"; console.log(car2.getInfo()); console.log(car2.name); </script> </body> </html>
結(jié)果為:
100
yupeng
yupeng1
201
I am returning: YUPENG
A blue PORSCHE BOXTER.
A blue XXXXXXXX.
aaaaaa
以上就是針對(duì)javascript一種新的對(duì)象創(chuàng)建方式Object.create()的詳細(xì)介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
ionic+html5+API實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用
這篇文章主要為大家詳細(xì)介紹了ionic+html5+API實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09js實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果(簡(jiǎn)單易懂)
本文主要介紹了js實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果的示例代碼,簡(jiǎn)單易懂。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03JS字符串累加Array不一定比字符串累加快(根據(jù)電腦配置)
言歸正傳:性能差異較大的機(jī)器運(yùn)行結(jié)果會(huì)RT 出現(xiàn)大的差異,為了保險(xiǎn)起見(jiàn)。還是推薦使用Array 來(lái)進(jìn)行字符串拼接操作2012-05-05javascript用戶注冊(cè)提示效果的簡(jiǎn)單實(shí)例
這個(gè)可以增加用戶驗(yàn)證,不用js alert來(lái)作提示,而是在右邊提示,現(xiàn)在很多網(wǎng)站都這樣做,有需要的朋友可以參考一下2013-08-08javascript自動(dòng)切換焦點(diǎn)控制效果完整實(shí)例
這篇文章主要介紹了javascript自動(dòng)切換焦點(diǎn)控制效果的方法,結(jié)合完整實(shí)例形式分析了JavaScript響應(yīng)鍵盤按鍵控制表單輸入框的焦點(diǎn)切換功能,需要的朋友可以參考下2016-02-02JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)視頻添加水印的示例代碼
這篇文章主要介紹了通過(guò)js給網(wǎng)頁(yè)視頻添加水印,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02javascript實(shí)現(xiàn)網(wǎng)頁(yè)端解壓并查看zip文件
昨天給大家分享了在網(wǎng)頁(yè)端使用zip.js插件實(shí)現(xiàn)在線壓縮文件的代碼,今天給大家分享一下javascript實(shí)現(xiàn)網(wǎng)頁(yè)端解壓并查看zip文件的方法,非常的實(shí)用,有需要的小伙伴可以參考下2015-12-12JavaScript 判斷指定字符串是否為有效數(shù)字
最近在做一個(gè)ColdFusion的項(xiàng)目,有一個(gè)業(yè)務(wù)Check,需要用JavaScript實(shí)現(xiàn):判斷指定字符串是否為有效數(shù)字。2010-05-05