第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

js的函數(shù)與對(duì)象有一個(gè)不明白的地方

js的函數(shù)與對(duì)象有一個(gè)不明白的地方

大話西游666 2018-08-16 10:09:05
函數(shù)可以理解為需要重復(fù)執(zhí)行的代碼塊。不同的地方可以進(jìn)行傳參。構(gòu)造函數(shù)加new關(guān)鍵字似乎可以起到函數(shù)相似的作用。我想問的是,函數(shù)與構(gòu)造函數(shù)+對(duì)象這兩種有什么相同點(diǎn)和不同點(diǎn)。什么時(shí)候使用函數(shù)?什么時(shí)候使用構(gòu)造函數(shù)+對(duì)象的形式。
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

關(guān)于“構(gòu)造函數(shù)+對(duì)象”,你其實(shí)缺的是有關(guān)“類”的知識(shí),關(guān)于這個(gè),我在求問js 中的類究竟是什么意思?已經(jīng)答過,自己閱讀吧

補(bǔ)充:

如果你懂“類”是什么,那這個(gè)問題本來就不應(yīng)該存在了。秉承好人做到底的原則,還是簡單說兩句吧。

雖然無論函數(shù),還是類都講求單一職責(zé),但顯然力度不同。當(dāng)我們使用函數(shù)時(shí),通常希望這個(gè)函數(shù)是“單純的”,即:不依賴上下文,譬如:

var sum = function(x, y){    return x + y;
};

這個(gè)函數(shù)只要我輸入的參數(shù)是2, 3,返回值永遠(yuǎn)都是5。可測(cè)試、可預(yù)料。簡單直接(當(dāng)然函數(shù)也可以完成先對(duì)復(fù)雜的工作,這個(gè)就看寫作人對(duì)需求的認(rèn)識(shí)、對(duì)代碼的理解了)

而當(dāng)面對(duì)“類”時(shí),她是完全“不單純”的,即:“類”就是創(chuàng)造了一個(gè)上下文,供各個(gè)實(shí)例對(duì)象使用;為什么要提供上下文,是因?yàn)椤邦悺碧峁┑氖且幌盗邢嚓P(guān)行為,單一職責(zé)在這里顯然力度更廣,為什么是一系列行為,這其實(shí)就是人們常說的“高內(nèi)聚”。打個(gè)比方,我現(xiàn)在寫一個(gè)動(dòng)物類:

class Animal {    constructor(type){        this.type = type;
    }
    
    movo(){        console.log(`I am ${this.type}, i can run`);
    }
}var cat = new Animal('cat');var dog = new Animal('dog');

cat.move();//I am cat, i can rundog.move();//I am dog, i can run

兩個(gè)不同的類,catdog,都調(diào)用了move方法,參數(shù)都沒有傳,但顯然輸出內(nèi)容不一樣了,因?yàn)檫@里依賴了上下文this.type。但這樣一個(gè)“動(dòng)物”的使用場(chǎng)景,如果改用函數(shù),怎么描述一個(gè)“貓”更合適?顯然比較困難

再次補(bǔ)充:

最后再談幾句關(guān)于模塊的事情,模塊通常用來組織代碼,和函數(shù)、類是不同緯度的工具,舉個(gè)例子:

java 9中,模塊類似命名空間,可以把若干有邏輯關(guān)聯(lián)的類歸在同一個(gè)模塊下,方便他人使用(這里的方便他人使用,就是“組織”相關(guān)的工作)。

又或者,在javascript中,模塊可以是一個(gè)函數(shù)(例如之前很火的left-pad),也可以是一個(gè)類(比如:bl)甚至可以是一大堆函數(shù)和類的集合(比如:express)。完全取決于你希望你的代碼怎么樣被組織、使用


查看完整回答
反對(duì) 回復(fù) 2018-09-17
  • 1 回答
  • 0 關(guān)注
  • 554 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)