摘要:參考文章構(gòu)造函數(shù)模式構(gòu)造函數(shù)的問(wèn)題使用構(gòu)造函數(shù)最主要的問(wèn)題就是每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一次,與的都有方法,但不是同一個(gè)的實(shí)例,因?yàn)樵谥幸彩且粋€(gè)對(duì)象。因此他們共有的方法并不相等。
參考文章
構(gòu)造函數(shù)模式:
this.show =function(){alert(this.name+"xxx")}
function Car(color,wheels){ this.color=color; this.wheels=wheels; this.cost=3000 }
構(gòu)造函數(shù)的問(wèn)題:使用構(gòu)造函數(shù)最主要的問(wèn)題就是每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一次,p1與p2的都有show方法,但不是同一個(gè)Function的實(shí)例,因?yàn)閒unction在js中也是一個(gè)對(duì)象。因此他們共有的show方法并不相等。相當(dāng)于都自己下載一份。浪費(fèi)內(nèi)存??梢宰鳛楣卜椒ɡ^承,就像網(wǎng)盤,保存 其實(shí)是新建一個(gè)指針,指向一個(gè)物理實(shí)體。所以只有一個(gè)實(shí)例
原型模式
function Car={}; Car.prototype.name = "法拉利"; Car.prototype.color = "red"; Car.prototype.move = function(){xxx};
混合模式,復(fù)制+繼承(共享)
function Car(color){
this.color = color;
}
Car.prototype.showname = function(){alert(this.name)}
or
Car.prototype={
showname:function(){ alert(this.name); }
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/84380.html
摘要:在基于原型的面向?qū)ο蠓绞街校瑢?duì)象則是依靠構(gòu)造函數(shù)和原型構(gòu)造出來(lái)的。來(lái)看下面的例子優(yōu)點(diǎn)與單純使用構(gòu)造函數(shù)不一樣,原型對(duì)象中的方法不會(huì)在實(shí)例中重新創(chuàng)建一次,節(jié)約內(nèi)存。 我們所熟知的面向?qū)ο笳Z(yǔ)言如 C++、Java 都有類的的概念,類是實(shí)例的類型模板,比如Student表示學(xué)生這種類型,而不表示任何具體的某個(gè)學(xué)生,而實(shí)例就是根據(jù)這個(gè)類型創(chuàng)建的一個(gè)具體的對(duì)象,比如zhangsan、lisi,由...
摘要:用對(duì)象字面量形式創(chuàng)建的對(duì)象,直接賦值給函數(shù)的原型對(duì)象,本質(zhì)上完全重寫了其對(duì)象,因此屬性也就變成了新對(duì)象的屬性指向構(gòu)造函數(shù),不再指向函數(shù)。 【上一篇】:JavaScript對(duì)象內(nèi)部屬性及其特性總結(jié) showImg(https://segmentfault.com/img/bVbjYsc?w=839&h=489); 工廠模式(★★) 先在內(nèi)部顯示地創(chuàng)建一個(gè)臨時(shí)對(duì)象,根據(jù)接收的參數(shù)來(lái)構(gòu)建(賦...
摘要:構(gòu)造函數(shù)的兩個(gè)特征函數(shù)內(nèi)部使用了,指向所要生成的對(duì)象實(shí)例。將一個(gè)空對(duì)象的指向構(gòu)造函數(shù)的屬性,這個(gè)對(duì)象就是要返回的實(shí)例對(duì)象。用面向?qū)ο箝_(kāi)發(fā)時(shí),把要生成的實(shí)例對(duì)象的特有屬性放到構(gòu)造函數(shù)內(nèi),把共有的方法放到構(gòu)造函數(shù)的里面。 JS中面向?qū)ο蟮母拍?面向?qū)ο驩OP是一種組織代碼結(jié)構(gòu)、實(shí)現(xiàn)功能過(guò)程的思維方式。它將真實(shí)世界各種復(fù)雜的關(guān)系,抽象為一個(gè)個(gè)對(duì)象,然后由對(duì)象之間的分工與合作,完成對(duì)真實(shí)世界的...
首先明確兩個(gè)概念: 構(gòu)造函數(shù)和 instance 分別是什么 構(gòu)造函數(shù)JS 中并沒(méi)有在語(yǔ)法層面上面區(qū)分構(gòu)造函數(shù)和普通函數(shù), 唯一的區(qū)別是調(diào)用方式使用 new 調(diào)用的函數(shù)就是構(gòu)造函數(shù), 沒(méi)有則是普通函數(shù). 實(shí)例new Constructor() 返回的對(duì)象稱為 Constructor 的一個(gè)實(shí)例 然后提出一個(gè)規(guī)則:在構(gòu)造函數(shù)的原型上面附加的屬性或者方法, 可以被其所有的實(shí)例共用. 可以推導(dǎo)出: ...
摘要:舉例說(shuō)明組合繼承組合繼承利用原型鏈借用構(gòu)造函數(shù)的模式解決了原型鏈繼承和類式繼承的問(wèn)題。示例組合式繼承是比較常用的一種繼承方法,其背后的思路是使用原型鏈實(shí)現(xiàn)對(duì)原型屬性和方法的繼承,而通過(guò)借用構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)對(duì)實(shí)例屬性的繼承。 對(duì)js原型和繼承的理解一直處于不懂-懂-不懂-懂-不懂。。。的無(wú)限循環(huán)之中,本來(lái)打算只是簡(jiǎn)單總結(jié)下js繼承方式,可看了些網(wǎng)上的資料后,發(fā)現(xiàn)又不懂繼承了。。。這篇文章只...
摘要:對(duì)象創(chuàng)建的三種方式字面量創(chuàng)建方式系統(tǒng)內(nèi)置構(gòu)造函數(shù)方式自定義構(gòu)造函數(shù)構(gòu)造函數(shù)原型實(shí)例之間的關(guān)系實(shí)例是由構(gòu)造函數(shù)實(shí)例化創(chuàng)建的,每個(gè)函數(shù)在被創(chuàng)建的時(shí)候,都會(huì)默認(rèn)有一個(gè)對(duì)象。 JS 對(duì)象創(chuàng)建的三種方式 //字面量創(chuàng)建方式 var person= { name:jack?。? //系統(tǒng)內(nèi)置構(gòu)造函數(shù)方式 var person= new Object(); person.name = jack; ...
閱讀 1139·2021-11-25 09:43
閱讀 1472·2021-11-18 10:02
閱讀 1943·2021-11-02 14:41
閱讀 2475·2019-08-30 15:55
閱讀 1127·2019-08-29 16:18
閱讀 2624·2019-08-29 14:15
閱讀 1447·2019-08-26 18:13
閱讀 830·2019-08-26 10:27