js高級(jí)知識(shí)點(diǎn)(第二天)

1腔召、面向?qū)ο蟮娜筇卣鳎悍庋b、繼承扮惦、多態(tài)臀蛛。

? 封裝:就是將方法封裝在對(duì)象中,只給出接口就可以調(diào)用崖蜜,利于維護(hù)浊仆,避免全局對(duì)象污染,

? 繼承:混入式繼承(mix-in),for(var i in),將一個(gè)對(duì)象繼承給例外一個(gè)對(duì)象豫领。

原型繼承:利用原型對(duì)象中的成員可以被和其相關(guān)的對(duì)象共享這一特性抡柿。

? 多態(tài):父類引用指向子類的對(duì)象(javascript中用不到)

2、創(chuàng)建對(duì)象的四種方式

? 1)氏堤、使用字面量創(chuàng)建對(duì)象: var obj = {value:1,name:'hyl'},缺點(diǎn):用一個(gè)創(chuàng)建一個(gè)沙绝,造成資源浪費(fèi)

? 2)、使用內(nèi)置的構(gòu)造函數(shù)創(chuàng)建對(duì)象:var obj = new Object();創(chuàng)建了一個(gè)空的對(duì)象鼠锈,然后添加成員闪檬,obj.name = '1',

? ? ? 缺點(diǎn):創(chuàng)建的是一個(gè)空的對(duì)象,還要將對(duì)象添加屬性购笆,造成代碼重復(fù)粗悯。

? 3)、封裝簡(jiǎn)單的工廠函數(shù)(不推薦使用)

? ? ? function createObj(name,age){

? ? ? ? let obj = {} 或者 obj = new Object();

? ? ? ? obj.name = name;

? ? ? ? obj.age = age;

? ? ? ? return obj;

? ? ? }

? 4)同欠、自定義構(gòu)造函數(shù)

? function 構(gòu)造函數(shù)名{

this.name = name;

....

? }

? 0.構(gòu)造函數(shù)名首字母需要大寫

? 1.構(gòu)造函數(shù)一般和new關(guān)鍵字一起使用

? 2.構(gòu)造函數(shù)的返回值默認(rèn)為新創(chuàng)建的對(duì)象样傍,如果手動(dòng)返回基本數(shù)據(jù)類型横缔,則不影響返回值,如果返回的是對(duì)象(除了null)衫哥,則新建出來的對(duì)象不會(huì)返回

取而代之的是return 后面的對(duì)象茎刚。

? 構(gòu)造函數(shù)(constructor)的執(zhí)行步驟:

? 1.使用new關(guān)鍵字來創(chuàng)建一個(gè)對(duì)象。

? 2.調(diào)用構(gòu)造函數(shù)撤逢,將new創(chuàng)建出來的對(duì)象賦值給構(gòu)造函數(shù)內(nèi)的this.

? 3.使用this給新創(chuàng)建出來的對(duì)象賦值

? 4.默認(rèn)返回新創(chuàng)建出來的對(duì)象


3膛锭、原型

? 構(gòu)造函數(shù)存在的問題:

? 構(gòu)造函數(shù)中的方法,每創(chuàng)建一個(gè)對(duì)象的時(shí)候蚊荣,該對(duì)象都會(huì)重新的創(chuàng)建一次這個(gè)方法初狰,每個(gè)獨(dú)享獨(dú)占一個(gè)方法,

? 但是該方法的內(nèi)容完全相同互例,所以造成資源浪費(fèi)奢入。


? 1.解決方法1

將構(gòu)造函數(shù)的方法,進(jìn)行提取媳叨,放在構(gòu)造函數(shù)的外面腥光,在構(gòu)造函數(shù)內(nèi)部進(jìn)行引用賦值。

那么創(chuàng)建出來的對(duì)象肩杈,都會(huì)指向構(gòu)造函數(shù)外面的這個(gè)函數(shù)柴我,達(dá)到共享的效果。

問題:全局變量越來越多扩然,造成全局變量污染艘儒,代碼結(jié)構(gòu)混亂,不容易維護(hù)夫偶。

? 2.解決辦法2

? ? 使用原型

4界睁、原型是什么?

在構(gòu)造函數(shù)創(chuàng)建出來的時(shí)候兵拢,系統(tǒng)默認(rèn)會(huì)創(chuàng)建一個(gè)關(guān)聯(lián)的對(duì)象翻斟,這個(gè)對(duì)象就是原型,原型對(duì)象默認(rèn)為空對(duì)象

默認(rèn)的原型對(duì)象中會(huì)有一個(gè)屬性 constructor指向該構(gòu)造函數(shù)说铃。

5访惜、原型的作用

原型對(duì)象中的成員,可以被使用和它關(guān)聯(lián)的構(gòu)造函數(shù)創(chuàng)建出來的所有對(duì)象共享

6腻扇、原型對(duì)象的使用:

1.使用動(dòng)態(tài)屬性特性债热,為原型添加成員變量。

2.直接替換原型對(duì)象幼苛。

注意事項(xiàng):直接替換原型對(duì)象窒篱,會(huì)導(dǎo)致替換之前創(chuàng)建的對(duì)象的原型和替換之后創(chuàng)建的對(duì)象的原型不一致。

7、原型的使用注意事項(xiàng)

1.使用對(duì)象訪問屬性的時(shí)候墙杯,會(huì)去現(xiàn)在的對(duì)象中查找配并,如果找到了就直接使用,如果未找到高镐,就去原型中找

2.使用對(duì)象設(shè)置屬性的時(shí)候溉旋,只會(huì)在對(duì)象的本身進(jìn)行查找,不會(huì)去原型中查找避消,如果對(duì)象本身中沒有這個(gè)屬性低滩,則給該對(duì)象新增一個(gè)屬性

如果對(duì)象中有這個(gè)屬性,修改這個(gè)屬性岩喷。

3.如果在原型對(duì)象中有引用類型的屬性,那么使用對(duì)象進(jìn)行修改該屬性內(nèi)容监憎,則其他所有跟這個(gè)原型對(duì)象相關(guān)的對(duì)象都會(huì)受到影響纱意,

Person.prototype.car = {}

var p = new Person();

p.car = {}; //這是修改屬性。

p.car.brand = '' //這是修改屬性的內(nèi)容

let a = p.car //查找鲸阔,如果自身對(duì)象沒有則在原型對(duì)象中查找偷霉,然后a.brand

4.一般情況下不會(huì)將屬性添加到原型對(duì)象中

只會(huì)講需要共享的方法添加到原型對(duì)象中

8、__proto__

1褐筛、這個(gè)屬性不是標(biāo)準(zhǔn)屬性类少,所以存在通用性問題。

2.一般不推薦使用

3.調(diào)試的時(shí)候可以使用

4.這個(gè)屬性是原型中的屬性渔扎。

9硫狞、替換原型的時(shí)候注意事項(xiàng)

在新替換的原型中,沒有constructor屬性晃痴,會(huì)影響三角結(jié)構(gòu)關(guān)系的合理性残吩。

so,在新替換的原型中倘核,手動(dòng)添加constructor屬性泣侮,以保證合理性,賦值為關(guān)聯(lián)的構(gòu)造函數(shù)紧唱。

Person.prototype = {

constructor: Person

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末活尊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漏益,更是在濱河造成了極大的恐慌蛹锰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遭庶,死亡現(xiàn)場(chǎng)離奇詭異宁仔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)峦睡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門翎苫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來权埠,“玉大人,你說我怎么就攤上這事煎谍∪帘危” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵呐粘,是天一觀的道長(zhǎng)满俗。 經(jīng)常有香客問我,道長(zhǎng)作岖,這世上最難降的妖魔是什么唆垃? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮痘儡,結(jié)果婚禮上辕万,老公的妹妹穿的比我還像新娘。我一直安慰自己沉删,他們只是感情好渐尿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著矾瑰,像睡著了一般砖茸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殴穴,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天凉夯,我揣著相機(jī)與錄音,去河邊找鬼推正。 笑死恍涂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的植榕。 我是一名探鬼主播再沧,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼尊残!你這毒婦竟也來了炒瘸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤寝衫,失蹤者是張志新(化名)和其女友劉穎顷扩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慰毅,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隘截,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婶芭。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡东臀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出犀农,到底是詐尸還是另有隱情惰赋,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布呵哨,位于F島的核電站赁濒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏孟害。R本人自食惡果不足惜拒炎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纹坐。 院中可真熱鬧枝冀,春花似錦、人聲如沸耘子。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谷誓。三九已至,卻和暖如春吨凑,著一層夾襖步出監(jiān)牢的瞬間捍歪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工鸵钝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糙臼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓恩商,卻偏偏與公主長(zhǎng)得像变逃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怠堪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容