摘要:我們可以利用它們?nèi)?shí)現(xiàn)數(shù)據(jù)的過(guò)濾和數(shù)據(jù)的綁定。實(shí)現(xiàn)一些簡(jiǎn)單的的效果繼承的應(yīng)用的實(shí)例繼承了的屬性劃重點(diǎn)相對(duì)于構(gòu)造函數(shù)的繼承繼承實(shí)現(xiàn)了將的原型完美分隔。雙方不會(huì)互相影響。
Object.create(null) 創(chuàng)建的對(duì)象是一個(gè)空對(duì)象,在該對(duì)象上沒(méi)有繼承 Object.prototype 原型鏈上的屬性或者方法
例如:toString(), hasOwnProperty()等方法
參數(shù) | 說(shuō)明 |
---|---|
obj | 創(chuàng)建對(duì)象的原型,表示要繼承的對(duì)象 |
propertiesObject(可選 ) | 也是一個(gè)對(duì)象,用于對(duì)新創(chuàng)建的對(duì)象進(jìn)行初始化 |
我們來(lái)看看底層實(shí)現(xiàn)
Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };
下面我們來(lái)看具體應(yīng)用:
//創(chuàng)建一個(gè)Obj對(duì)象 var Obj ={ name:"mini", age:3, show:function () { console.log(this.name +" is " +this.age); } } //MyObj 繼承obj, prototype指向Obj var MyObj = Object.create(Obj,{ like:{ value:"fish", // 初始化賦值 writable:true, // 是否是可改寫(xiě)的 configurable:true, // 是否能夠刪除,是否能夠被修改 enumerable:true //是否可以用for in 進(jìn)行枚舉 }, hate:{ configurable:true, get:function () { console.log(111); return "mouse" }, // get對(duì)象hate屬性時(shí)觸發(fā)的方法 set:function (value) { // set對(duì)象hate屬性時(shí)觸發(fā)的方法 console.log(value,2222); return value; } } });
劃重點(diǎn):這里get和set 方法似乎還蘊(yùn)含更大的潛力 。我們可以利用它們?nèi)?shí)現(xiàn)數(shù)據(jù)的過(guò)濾和數(shù)據(jù)的綁定 。實(shí)現(xiàn)一些簡(jiǎn)單的mvvm的效果Object.create繼承的應(yīng)用:
var A = function () { }; A.prototype.sayName=function () { console.log("a"); } // B的實(shí)例繼承了A的屬性 var B = function () { }; B.prototype = Object.create(A.prototype); var b = new B(); b.sayName(); // a
劃重點(diǎn):相對(duì)于構(gòu)造函數(shù)的繼承Object.create繼承實(shí)現(xiàn)了將A,B的原型完美分隔 。雙方不會(huì)互相影響。這是Object.create亮點(diǎn)所在
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99893.html
介紹 在創(chuàng)建對(duì)象的時(shí)候,我們有2種常用方法 一個(gè)是文本標(biāo)記法(var obj = {}),一種是運(yùn)用Object函數(shù)進(jìn)行對(duì)象的創(chuàng)建(new Object()). 但是這兩種方式并不是創(chuàng)建的一個(gè)完完全全干干凈凈的對(duì)象,這里的干凈只得是沒(méi)有繼承鏈. 幸運(yùn)的是,ES5為我們提供了一種創(chuàng)建完全干凈的對(duì)象的方法,Object.create函數(shù),接下我將向大家介紹Obje...
摘要:引言上篇文章介紹原型,這篇文章接著講繼承,嘔心瀝血之作,大哥們點(diǎn)個(gè)贊呀明確一點(diǎn)并不是真正的面向?qū)ο笳Z(yǔ)言,沒(méi)有真正的類(lèi),所以我們也沒(méi)有類(lèi)繼承實(shí)現(xiàn)繼承有且僅有兩種方式,和原型鏈在介紹繼承前我們先介紹下其他概念函數(shù)的三種角色一個(gè)函數(shù),有三種角色。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 上篇文章介紹原型,...
摘要:對(duì)象是屬性的無(wú)序集合。使用對(duì)象直接量創(chuàng)建的對(duì)象的原型就是,使用運(yùn)算符創(chuàng)建的對(duì)象的原型是構(gòu)造函數(shù)的的值。主要目的是將對(duì)象鎖定,避免外界干擾。判斷對(duì)象是否封閉。刪除屬性可刪除對(duì)象的自有屬性且為的屬性。 對(duì)象是屬性的無(wú)序集合。因此,這一章主要從對(duì)象和屬性兩個(gè)方面來(lái)闡述。showImg(https://box.worktile.com/view/c8f5f376fe314aeca69d9b4c...
摘要:基于原型的繼承誠(chéng)惶誠(chéng)恐的寫(xiě)下這篇文章。無(wú)論是還是,都是面向?qū)ο蟮?。將這個(gè)新對(duì)象作為構(gòu)造函數(shù)的執(zhí)行上下文其指向這個(gè)對(duì)象,并執(zhí)行構(gòu)造函數(shù)返回這個(gè)對(duì)象原型繼承我們來(lái)定義一個(gè)簡(jiǎn)單的類(lèi)和它的原型我們?cè)谠蜕隙x了一個(gè)方法。 源碼: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/JavaScr...
摘要:使用操作符,創(chuàng)建一個(gè)對(duì)象,并且執(zhí)行構(gòu)造函數(shù)方法。使用可以返回一個(gè)字典型對(duì)象對(duì)象原型每一個(gè)對(duì)象都有一個(gè)內(nèi)置的屬性指向構(gòu)造它的函數(shù)屬性而構(gòu)造函數(shù)的則指向構(gòu)造函數(shù)本生。 對(duì)象概念 在 javascript 中, 一切引用類(lèi)型均為對(duì)象。 如 function Foo () {} 中,F(xiàn)oo本身就是一個(gè)對(duì)象的引用。 創(chuàng)建對(duì)象方式 字面量方式 new 構(gòu)造函數(shù) 函數(shù)聲明 Object.creat...
閱讀 3379·2021-11-22 09:34
閱讀 2894·2021-10-09 09:43
閱讀 1464·2021-09-24 09:47
閱讀 2214·2019-08-30 12:53
閱讀 1013·2019-08-29 14:00
閱讀 3374·2019-08-29 13:17
閱讀 2279·2019-08-28 18:00
閱讀 1298·2019-08-26 12:00