摘要:博客地址地址今天開啟我的專欄第一篇,接下來的日子,將和大家談?wù)撘幌乱恍┦虑?,我慢慢發(fā)現(xiàn)你想實(shí)習(xí)面向?qū)ο缶幊?,你得對原型鏈比較熟悉,對于指向也要比較熟悉,才能更好,將代碼進(jìn)行高度抽象起來面向?qū)ο蟾拍蠲嫦驅(qū)ο蠛兔嫦蜻^程的區(qū)別面向過程我們在剛剛初
博客地址地址
今天開啟我的專欄第一篇,接下來的日子,將和大家談?wù)撘幌翵avaScript一些事情,
我慢慢發(fā)現(xiàn)你想實(shí)習(xí)面向?qū)ο缶幊?,你得對原型鏈比較熟悉,對于this指向也要比較熟悉,才能更好,將代碼進(jìn)行高度抽象起來
1.0 面向?qū)ο蟾拍?/b> 1.1 面向?qū)ο蠛兔嫦蜻^程的區(qū)別面向過程:我們在剛剛初學(xué)JavaScript時(shí)候,我們要復(fù)用一個(gè)方法,就想這個(gè)方法寫成一個(gè)函數(shù),然后在需要用到的時(shí)候,進(jìn)行調(diào)用
面向?qū)ο?/b>:把構(gòu)成問題事務(wù)分解成各個(gè)對象,建立對象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問題的步驟中的行為。
知乎有一個(gè)關(guān)于面向?qū)ο笕グ傻幕卮?/p>
面向過程的解決方法搖狗尾巴和狗搖尾巴的區(qū)別
在面向過程的編程方式中實(shí)現(xiàn)“把大象放冰箱”這個(gè)問題答案是耳熟能詳?shù)?,一共分三步?/p>
開門(冰箱); 裝進(jìn)(冰箱,大象); 關(guān)門(冰箱)。面向?qū)ο蟮慕鉀Q方法
冰箱.開門() 冰箱.裝進(jìn)(大象) 冰箱.關(guān)門()2.0 實(shí)現(xiàn)面向?qū)ο蠓椒?/b>
這里我們討論幾個(gè)主要的實(shí)現(xiàn)面向?qū)ο蠓椒?/p> 2.1 工廠模式
何為工廠模式,
function Person(name,age,sex){ var obj = {}; obj.name = name; obj.age=age; obj.sex=sex; return obj; } let person1 = Person("夏夏",18,"男") console.log(person1)
其實(shí)上面還有這么寫
function Person(name,age,sex){ var obj = {}; obj.name = name; obj.age = age; obj.sex =sex; } let person2 = new Person("我是有new",18,"男")2.2 構(gòu)造函數(shù)
JavaScript中new可以讓函數(shù)變的與眾不同
function demo() { console.log(this); } demo(); // window new demo(); // demo
關(guān)于構(gòu)造函數(shù),如果你暫時(shí)不能夠理解new的具體實(shí)現(xiàn),就先記住下面這幾個(gè)結(jié)論吧。
與普通函數(shù)相比,構(gòu)造函數(shù)并沒有任何特別的地方,首字母大寫只是我們約定的小規(guī)定,用于區(qū)分普通函數(shù); new關(guān)鍵字讓構(gòu)造函數(shù)具有了與普通函數(shù)不同的許多特點(diǎn),而new的過程中,執(zhí)行了如下過程: 聲明一個(gè)中間對象;
將該中間對象的原型指向構(gòu)造函數(shù)的原型;
將構(gòu)造函數(shù)的this,指向該中間對象;
返回該中間對象,即返回實(shí)例對象。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89581.html
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:是完全的面向?qū)ο笳Z言,它們通過類的形式組織函數(shù)和變量,使之不能脫離對象存在。而在基于原型的面向?qū)ο蠓绞街?,對象則是依靠構(gòu)造器利用原型構(gòu)造出來的。 JavaScript 函數(shù)式腳本語言特性以及其看似隨意的編寫風(fēng)格,導(dǎo)致長期以來人們對這一門語言的誤解,即認(rèn)為 JavaScript 不是一門面向?qū)ο蟮恼Z言,或者只是部分具備一些面向?qū)ο蟮奶卣鳌1疚膶⒒貧w面向?qū)ο蟊疽?,從對語言感悟的角度闡述為什...
摘要:對象重新認(rèn)識面向?qū)ο竺嫦驅(qū)ο髲脑O(shè)計(jì)模式上看,對象是計(jì)算機(jī)抽象現(xiàn)實(shí)世界的一種方式。除了字面式聲明方式之外,允許通過構(gòu)造器創(chuàng)建對象。每個(gè)構(gòu)造器實(shí)際上是一個(gè)函數(shù)對象該函數(shù)對象含有一個(gè)屬性用于實(shí)現(xiàn)基于原型的繼承和共享屬性。 title: JS對象(1)重新認(rèn)識面向?qū)ο? date: 2016-10-05 tags: JavaScript 0x00 面向?qū)ο?從設(shè)計(jì)模式上看,對象是...
摘要:之前,本質(zhì)上不能算是一門面向?qū)ο蟮木幊陶Z言,因?yàn)樗鼘τ诜庋b繼承多態(tài)這些面向?qū)ο笳Z言的特點(diǎn)并沒有在語言層面上提供原生的支持。所以在中出現(xiàn)了等關(guān)鍵字,解決了面向?qū)ο笾谐霈F(xiàn)了問題。 ES6之前,javascript本質(zhì)上不能算是一門面向?qū)ο蟮木幊陶Z言,因?yàn)樗鼘τ诜庋b、繼承、多態(tài)這些面向?qū)ο笳Z言的特點(diǎn)并沒有在語言層面上提供原生的支持。但是,它引入了原型(prototype)的概念,可以讓我們以...
閱讀 3730·2021-11-17 09:33
閱讀 2756·2021-09-22 15:12
閱讀 3356·2021-08-12 13:24
閱讀 2451·2019-08-30 11:14
閱讀 1742·2019-08-29 14:09
閱讀 1334·2019-08-26 14:01
閱讀 3074·2019-08-26 13:49
閱讀 1786·2019-08-26 12:16