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