面向?qū)ο?/h1>

面向?qū)ο?br>

* 單利模式

* 工廠模式

* 構(gòu)造函數(shù)模式

* 原型模式

* call,apply,bind

* 繼承

面向?qū)ο?/p>

對象:指的是基于對象 類 實力來研究的

類:是對對象的具體細(xì)分

實例:某一個類別種具體的事物

對象的特征:屬性 方法

面向?qū)ο蟮奶攸c

面向?qū)ο笏枷胍步校╫o思想 oop思想)

1:封裝:對同一個功能的函數(shù)刃唐,只能封裝一次,以后遇到此功能只需要調(diào)用即可界轩,無需重寫画饥。避免大量亢余代碼:低耦合,高內(nèi)聚(單利模式 工廠模式 構(gòu)造函數(shù)模式 原型模式)

2:繼承:子類可以繼承父類的屬性跟方法

3:多態(tài):多種形態(tài) ?重寫 重載

重載:js沒有嚴(yán)格意義上的重載浊猾,有類似的功能抖甘,傳不同的參數(shù),可以實現(xiàn)不同的功能

重寫:子類可以重寫父類的屬性和方法

單利模式

單例模式

1:單例模式葫慎;把描述同一個對象的屬性和方法衔彻,都放在同一個命名空間下避免全局變量的污染

和沖突

單利模式,解決了變量沖突偷办,實現(xiàn)了分類分組

命名空間: 在單利模式中艰额,我們的對象名叫做命名空間,單利模式把實現(xiàn)和描述同一件事物的屬性和方法進行分類歸納椒涯,然后匯總的同一個命名空間下柄沮,不同的命名空間互不沖突

把描述這個對象的屬性跟方法,所存放的空間废岂,起個名字

2:單利模式的本質(zhì);普通對象

模塊化開發(fā)祖搓;單利模式就是最簡單的模塊化開發(fā)

對于一個大型的項目,會分配給不同的工程師湖苞,進行同步開發(fā)拯欧;等所有人都開發(fā)完成之后,最后

進行代碼合并

3:關(guān)于單利模式的優(yōu)缺點

1 優(yōu)點:單利模式可以避免全局變量的污染和沖突

2袒啼;單利模式是最簡單的模塊開發(fā)

1)本模塊之間的相互調(diào)用 哈扮;this.屬性名

2)不同模塊之間的相互調(diào)用;模塊名.屬性名

2 缺點:會存在大量的大量亢余代碼

4:解決措施蚓再;工廠模式

這三種都是單例模式

1:var personRender={};

2:var studentRender=(function{

return {}

})()

3:function Person(){ } ?var p=new Person()

工廠模式

工廠模式的本質(zhì)-封裝

1滑肉;引進原材料 ? ? 創(chuàng)建一個空對象{} new Object()

2;加工 ? ? ? ? ?給對象添加屬性和方法

3摘仅;輸出產(chǎn)品 ? ? ? 輸出已經(jīng)加工后的對象靶庙;

5;如果想讓工廠模式的調(diào)用方式娃属,跟系統(tǒng)類的調(diào)用方式一樣需要做兩步

1)首字母大寫

2)添加new

構(gòu)造函數(shù)模式

函數(shù):

object 和function 都有一個自帶的name值指向自己

length是形參的個數(shù)

構(gòu)造函數(shù)跟工廠模式的區(qū)別

1)類調(diào)用的時候六荒;

(1)工廠模式是普通函數(shù)的調(diào)用 person()

普通函數(shù)執(zhí)行的時候沒返回值护姆,那么是undefined

(2)構(gòu)造函數(shù);new首字母大寫() new person

構(gòu)造函數(shù)執(zhí)行的時候掏击,沒返回值卵皂,那么是person{} 這個對象

構(gòu)造函數(shù)模式執(zhí)行:

- 1:創(chuàng)建一個私有作用域 - 進行形參賦值- 預(yù)解釋

- 2:new 這樣執(zhí)行,在預(yù)解釋完成后砚亭,瀏覽器默認(rèn)的在私有作用域中灯变,創(chuàng)建一個對象,函數(shù)中this指向這個對象

- 3:在和普通函數(shù)一樣捅膘,代碼從上到下執(zhí)行

- 4:new這樣執(zhí)行添祸,在代碼執(zhí)行完成之后,會默認(rèn)的把第二步種(沒有return也會默認(rèn)返回一個對象)寻仗,我們創(chuàng)建的這個對象返回

2)函數(shù)體內(nèi)的不同

工廠模式(普通函數(shù))刃泌;三步 1)創(chuàng)建對象 2)加工對象 3)返回對象

構(gòu)造函數(shù);一步加工對象

7)關(guān)于構(gòu)造函數(shù)的小細(xì)節(jié)

1署尤;構(gòu)造函數(shù)的this都是實例

2耙替;構(gòu)造函數(shù)中存放的都是私有的屬性和方法

3;實例只跟構(gòu)造函數(shù)種的this.xxx有關(guān)沐寺,跟var沒任何關(guān)系

4林艘;構(gòu)造函數(shù)中,系統(tǒng)默認(rèn)為我們創(chuàng)建一個實例混坞,并且默認(rèn)返回一個實例

5:通過構(gòu)造函數(shù)創(chuàng)建出來的實例都是相互獨立的個體,互不影響钢坦,而在構(gòu)造函數(shù)體中寫的this,xx=xx 都相當(dāng)于給當(dāng)前實例增加自己的私有屬性

不建議自己手動返回對象究孕,如果非要手動返回的話 return ?構(gòu)造函數(shù)最好不要寫return

1)返回的是基本數(shù)據(jù)類型,無效爹凹,實例該有的屬性和方法仍然有

2)返回的是引用數(shù)據(jù)類型厨诸,以前給實例添加的屬性和方法都無效了

8;構(gòu)造函數(shù)禾酱;實例和類打交道

9微酬; new Student() new Student這個new出來的實例都會執(zhí)行 在new一個實例的時候,如果不需要傳參()可以省略

10颤陶;學(xué)習(xí)構(gòu)造函數(shù)的目的

1)了解系統(tǒng)類的構(gòu)成

2)自己定義一個類颗管,并且創(chuàng)建一個實例;

11: 類是函數(shù)數(shù)據(jù)類型

實例是對象數(shù)據(jù)類型

原型模式

原型模式的基礎(chǔ)知識:

1.每個函數(shù)數(shù)據(jù)類型(普通函數(shù)滓走,類(內(nèi)置類垦江,自定義類)構(gòu)造函數(shù))上,都有一個屬性搅方,

叫做prototype比吭,prototype是個原型绽族;他的屬性值是個對象

2.prototype這個對象上,存放的都是公有的屬性和方法衩藤,

他天生自帶一個屬性

constructor(構(gòu)造函數(shù)),指向當(dāng)前這個構(gòu)造函數(shù)吧慢;

3.每個對象數(shù)據(jù)類型(實例,prototype,普通對象)上赏表,

都有一個屬性叫做__proto__,指向當(dāng)前實例所屬類的原型娄蔼;

14)Object.prototype上的方法:

in驗證某一個屬性是否屬于這個對象,不管是私有的還是公有的底哗,只要有岁诉,返回的結(jié)果都是true

hasOwnProperty():

判斷是否為對象的私有屬性

obj1.isPrototypeOf(obj2) :obj1是否在obj2的原型鏈上;

propertyIsEnumerable:是否為可枚舉的屬性

15)__proto__原型鏈:

如果想查找:對象.屬性名

1)先看該對象的私有空間中是否有跋选,如果有涕癣,說明這個屬性是私有屬性;

2)如果沒有前标,通過__proto__繼續(xù)往當(dāng)前實例所屬類的原型上找坠韩,找到了,說明是公有屬性炼列;

3)找不到繼續(xù)通過__proto__一直往上找只搁,找到基類Object.prototype原型上,還沒有的話undefined;

__proto__原型鏈this:

他們的this指向不同俭尖,但是查到找的結(jié)果都一樣

p1.hasOwnproperty() ? p1

p1.__proto__.hasOwnproperty() ?p1的原型

p1.__proto__.__proto__hasOwnproperty() object

16)

1:所有的函數(shù)數(shù)據(jù)類型氢惋,都是

function這個類的實例

2:所有的對象都是object這個基類的實例

3)function和object的關(guān)系:

(1)object instanceof function ===>true 所有類都是function這個類的實例

(2)function instanceof function ===>true 所有的對象都是object這個基類的實例

(3)object.prototype 是function.prototype的爹 當(dāng)他的身份是函數(shù)的時候,有prototype

(4)object.prototype是function_proto_的爹 當(dāng)他為對象的時候稽犁,是有這個—proto—

4:

函數(shù)的三種角色

(1):普通函數(shù):形成私有作用域-形參賦值-預(yù)解釋-代碼從上到下執(zhí)行 以及內(nèi)存和內(nèi)存的釋放

(2):構(gòu)造函數(shù):實例 類 原型 —proto—

(3):對象:跟普通對象的功能一模一樣

1焰望;在ie瀏覽器下,禁止用戶通過__proto__去修改實例上公有的屬性和方法

這上ie瀏覽器的自我保護機制

2已亥;在所有的瀏覽器下熊赖,禁止用戶批量修改,實例上的公有屬性和方法

但是我們可以通過虑椎,類.prototype.xx進行一個個的修改

一個個修改在標(biāo)準(zhǔn)瀏覽器下震鹉,有兩種方式

1)實例.__proto__.屬性名

2)類.prototype.屬性名

3;

- ?鏈?zhǔn)讲僮骼覀冴P(guān)注的是前一個函數(shù)執(zhí)行完成的返回值传趾,返回的是個數(shù)組,后續(xù)就跟數(shù)組的方法娇未,

- 鏈?zhǔn)綄懛ǎ盒枰WC每一次執(zhí)行方法返回的結(jié)果依然是當(dāng)前類的一個實例墨缘,這樣就可以繼續(xù)調(diào)取原型上的方法了

返回的是個數(shù)字,后續(xù)就跟數(shù)字的方法

num.toFixed(2)保留小數(shù)個數(shù)2位

4;應(yīng)有的條件反射

構(gòu)造函數(shù)镊讼;放的都是私有的屬性和方法

prototype宽涌;放的都是共有的屬性和方法

類.prototype自己賦值一個對象,

constructor一定會出問題

5蝶棋;in判斷某個屬性是否為對象私有+公有屬性 ?加引號

6卸亮;數(shù)組去重;

1.思路1玩裙;雙重循環(huán)

拿當(dāng)前項跟他后面的每一項兼贸,如果相同,刪除其中一個吃溅,一定要預(yù)防數(shù)組塌陷 ;

2;思路2溶诞;創(chuàng)建新數(shù)組

當(dāng)新數(shù)組中沒有重復(fù)的時候,才給新數(shù)組種放

3决侈;思路3螺垢;利用對象不重名的特性

當(dāng)對象中沒有該屬性的時候,賦值為1

當(dāng)對象中已經(jīng)有了該屬性的時候赖歌,進行累加

注意枉圃;兩個條件中,只走一個1)continue 2)if...else...

7;屬性操作

注意庐冯;判斷屬性是否在對象上孽亲,屬性名一定要加引號,否則會把它當(dāng)作變量展父,報錯

1返劲;in判斷某個屬性是否為對象私有+公有屬性 ?加引號

2;obj.hasOwnproperty(屬性名)判斷是否有對象的私有屬性 propertyIsEnumerable也可以用

3犯祠;自己封裝旭等;hasOwnproperty;判斷屬性是否為對象的

8;原型批量設(shè)置

Fn.prototype=

{

手動添加一個:constrouctor:Fn

x:10,

y:11,

c:22

}

call,apply,bind

call:

1:call在Function.prototype原型上找:公有屬性和方法

- f1.call(f2);

函數(shù)中沒有this的時候衡载,

call前面的函數(shù)f1執(zhí)行

- f1.call.call.call.call.call.call.call.call(f2);

-

call(f2) 他先執(zhí)行, ?然后將前面f1.call改成f2.call()執(zhí)行

函數(shù)中沒有this的時候 f2這個函數(shù)執(zhí)行

2:f1.call(obj);

嚴(yán)格和非嚴(yán)格

1: 非嚴(yán)格模式下如果

call的第一個參數(shù)隙袁,不傳或者傳的是undefined/null痰娱,方法種的this是window

2:嚴(yán)格模式下,如果call中第一個參數(shù)不傳就是undefined菩收,其余call中的第一個參數(shù)是啥就是啥梨睁,如果是null就是null,如果傳的的undefined就是undefined 'use strict'

3:call的第一個參數(shù),用來改變call前面這個實例中的this關(guān)鍵字娜饵;

4:call改完this指向坡贺,傳完參數(shù)之后,讓call前面的函數(shù)立即執(zhí)行;

3:call的作用改變this指向

call的第一個參數(shù)遍坟,用來改變call點前面的函數(shù)中this指向

call的第二個參數(shù)開始拳亿,相當(dāng)于給fn的形參從左往右賦值

1)call,apply,bind區(qū)別:

call apply 都是在改完this指向,傳完參數(shù)之后愿伴,讓前面的函數(shù)立即執(zhí)行

區(qū)別肺魁;第二個參數(shù)不同;call從第二個參數(shù)開始隔节,一個個寫參數(shù)鹅经,

apply;第二個參數(shù)是個數(shù)組怎诫;

2)bind;

屬于預(yù)處理機制瘾晃;先把bind前面的函數(shù)種的this改了,參數(shù)傳了幻妓,

然后返回一個修改后的函數(shù)蹦误;在需要的時候,手動調(diào)用 ? 函數(shù)執(zhí)行的時候涌哲,他才執(zhí)行

繼承

子類可以繼承父類的屬性跟方法

1:

call繼承

call:把父類的私有的屬性和方法胖缤,都繼承給了子類私有的

2;冒充繼承

把父類私有+公有的屬性和方法阀圾,都繼承給子類私有的(for var a in f1 )

3;

原型鏈繼承

把父類私有+公有的屬性和方法,都繼承給子類公有的

4;拷貝繼承

call繼承+extend繼承(參數(shù)里面哪廓,后面繼承前面的,)

私有繼承私有的初烘,公有繼承公有的

5:混合繼承:子類私有有父類私有的涡真; 子類公有也有父類私有的

原型鏈繼承:把父類私有+公有,都給了子類公有的

call繼承把父類私有的給了子類私有的肾筐;

6:混合繼承

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末哆料,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吗铐,更是在濱河造成了極大的恐慌东亦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唬渗,死亡現(xiàn)場離奇詭異典阵,居然都是意外死亡,警方通過查閱死者的電腦和手機镊逝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門壮啊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撑蒜,你說我怎么就攤上這事歹啼⌒” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵狸眼,是天一觀的道長藤树。 經(jīng)常有香客問我,道長份企,這世上最難降的妖魔是什么也榄? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮司志,結(jié)果婚禮上甜紫,老公的妹妹穿的比我還像新娘。我一直安慰自己骂远,他們只是感情好囚霸,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著激才,像睡著了一般拓型。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘸恼,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天劣挫,我揣著相機與錄音,去河邊找鬼东帅。 笑死压固,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的靠闭。 我是一名探鬼主播帐我,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愧膀!你這毒婦竟也來了拦键?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤檩淋,失蹤者是張志新(化名)和其女友劉穎芬为,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟀悦,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡碳柱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了熬芜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡福稳,死狀恐怖涎拉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤鼓拧,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布半火,位于F島的核電站,受9級特大地震影響季俩,放射性物質(zhì)發(fā)生泄漏钮糖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一酌住、第九天 我趴在偏房一處隱蔽的房頂上張望店归。 院中可真熱鬧,春花似錦酪我、人聲如沸消痛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秩伞。三九已至,卻和暖如春欺矫,著一層夾襖步出監(jiān)牢的瞬間纱新,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工穆趴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脸爱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓毡代,卻偏偏與公主長得像阅羹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子教寂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

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