JS的深入淺出


隱式轉(zhuǎn)換

隱式轉(zhuǎn)換


數(shù)據(jù)類型
+-巧用



a==b
a===b(嚴(yán)格等于)

包裝對(duì)象

原始類型是沒(méi)有對(duì)象屬性的颗品,但是類似a.t或者a.length等操作牺蹄,會(huì)轉(zhuǎn)換成一個(gè)臨時(shí)對(duì)象稠集,但是當(dāng)返回后,臨時(shí)對(duì)象被銷毀库糠,所以alert(a.t)為undefined


類似上面

類型檢測(cè)


typeof

typeof返回字符串伙狐,判斷基本類型涮毫,函數(shù)對(duì)象非常方便,對(duì)其他對(duì)象不怎方便


instanceof
Object.prototype.toString










instanceof判斷對(duì)象類型贷屎,基于原型鏈判斷罢防;typeof返回字符串,通常用于原始類型以及函數(shù)對(duì)象唉侄,如判斷一個(gè)東西是不是原始類型或者函數(shù)咒吐,用typeof比較合適。






var a=b=1;? a被創(chuàng)建為局部/全局(看位置)變量属划,b被創(chuàng)建為全局變量





函數(shù)聲明與函數(shù)表達(dá)式

區(qū)別:函數(shù)前置恬叹,函數(shù)聲明會(huì)被預(yù)先處理,可在其前面調(diào)用函數(shù)同眯,函數(shù)表達(dá)式則不行绽昼。



















obj.hasOwnProperty('z'); //true? ?檢測(cè)obj上是否存在z屬性(判斷自身屬性是否存在)



!注意:用for in遍歷屬性有可能會(huì)把原型鏈上的屬性也遍歷出來(lái)须蜗,但是順序是不確定的




hasOwnProperty() //判斷對(duì)象是否存在屬性硅确,同時(shí)可用來(lái)過(guò)濾掉原型鏈上的屬性(巧用)? ? ?propertyIsEnumerable() //判斷對(duì)象是否可枚舉


!明肮!注意:defineProperty定義屬性默認(rèn)等于false菱农;巧用&&可以用來(lái)判斷屬性是否存在;柿估!=一般等于空循未,undefined等于null













sort按字母大小排序

arr.sort(function(a,b){

? ? return a - b?

});


slice():索引切片,左閉右開區(qū)間官份,負(fù)數(shù)索引表示從后往前只厘,對(duì)原數(shù)組進(jìn)行修改


arr.forEach(function(a,index,n){

})

a:值,index:索引舅巷,n:true/false




reduce() 方法接收一個(gè)函數(shù)作為累加器羔味,數(shù)組中的每個(gè)值(從左到右)開始縮減,最終計(jì)算為一個(gè)值钠右。

reduceRight()方法的功能和reduce()功能是一樣的赋元,不同的是reduceRight()從數(shù)組的末尾向前將數(shù)組中的數(shù)組項(xiàng)做累加。

第一個(gè)參數(shù):查找的元素飒房;第二個(gè)參數(shù):開始查找的位置




函數(shù):


函數(shù)聲明可聲明前置搁凸,函數(shù)表達(dá)式不可以



不常見(jiàn),a狠毯、b:形參护糖,第三個(gè):字符串代碼,存在安全隱患


this
















閉包:





閉包的作用:結(jié)合實(shí)際案例:

https://blog.csdn.net/u011086209/article/details/88858277


作用域:



在javascript中嚼松,是沒(méi)有塊級(jí)作用域這種說(shuō)法的


匿名函數(shù)(自執(zhí)行)

匿名函數(shù)顧名思義指的是沒(méi)有名字的函數(shù)嫡良,在實(shí)際開發(fā)中使用的頻率非常高锰扶!也是學(xué)好JS的重點(diǎn)。

匿名函數(shù):沒(méi)有實(shí)際名字的函數(shù)寝受。

首先我們聲明一個(gè)普通函數(shù):

//聲明一個(gè)普通函數(shù)坷牛,函數(shù)的名字叫fn

function fn(){

??? console.log("張培躍");

}

然后將函數(shù)的名字去掉即是匿名函數(shù):


//匿名函數(shù),咦很澄,運(yùn)行時(shí)京闰,你會(huì)發(fā)現(xiàn)報(bào)錯(cuò)啦!

function (){

??? console.log("張培躍");

}

到此甩苛,你會(huì)發(fā)現(xiàn)單獨(dú)運(yùn)行一個(gè)匿名函數(shù)蹂楣,由于不符合語(yǔ)法要求,報(bào)錯(cuò)啦浪藻!解決方法只需要給匿名函數(shù)包裹一個(gè)括號(hào)即可:

//匿名函數(shù)在其它應(yīng)用場(chǎng)景括號(hào)可以省略

(function (){

??? //由于沒(méi)有執(zhí)行該匿名函數(shù)捐迫,所以不會(huì)執(zhí)行匿名函數(shù)體內(nèi)的語(yǔ)句乾翔。

??? console.log("張培躍");

})

如果需要執(zhí)行匿名函數(shù)爱葵,在匿名函數(shù)后面加上一個(gè)括號(hào)即可立即執(zhí)行!

(function (){

??? //此時(shí)會(huì)輸出張培躍

??? console.log("張培躍");

})()

倘若需要傳值反浓,直接將參數(shù)寫到括號(hào)內(nèi)即可:

(function (str){

??? //此時(shí)會(huì)輸出張培躍好帥萌丈!

??? console.log("張培躍"+str);

})("好帥!")


匿名函數(shù)的應(yīng)用場(chǎng)景

1雷则、事件

<input type="button" value="點(diǎn)我傲疚怼!" id="sub">

<script>

??? //獲得按鈕元素

??? var sub=document.querySelector("#sub");

??? //給按鈕增加點(diǎn)擊事件月劈。

??? sub.onclick=function(){

??????? alert("當(dāng)點(diǎn)擊按鈕時(shí)會(huì)執(zhí)行到我哦度迂!");

??? }

</script>


2、對(duì)象

var obj={

??? name:"張培躍",

??? age:18,

??? fn:function(){

??????? return "我叫"+this.name+"今年"+this.age+"歲了猜揪!";

??? }

};

console.log(obj.fn());//我叫張培躍今年18歲了惭墓!


3、函數(shù)表達(dá)式

//將匿名函數(shù)賦值給變量fn而姐。

var fn=function(){

??? return "我是一只小小小小留下腊凶,怎么飛也飛不高!"

}

//調(diào)用方式與調(diào)用普通函數(shù)一樣

console.log(fn());//我是一只小小小小留下踢关,怎么飛也飛不高央串!


4狈邑、回調(diào)函數(shù)

setInterval(function(){

??? console.log("我其實(shí)是一個(gè)回調(diào)函數(shù),每次1秒鐘會(huì)被執(zhí)行一次");

},1000);


5风瘦、返回值

//將匿名函數(shù)作為返回值

function fn(){

??? //返回匿名函數(shù)

??? return function(){

??????? return "張培躍";

??? }

}

//調(diào)用匿名函數(shù)

console.log(fn()());//張培躍

//或

var box=fn();

console.log(box());//張培躍


模仿塊級(jí)作用域

塊級(jí)作用域,有的地方稱為私有作用域公般。JavaScript中是沒(méi)有塊級(jí)作用域的万搔,例如:

if(1==1){//條件成立器躏,執(zhí)行if代碼塊語(yǔ)句。

??? var a=12;//a為全局變量

}

console.log(a);//12


for(var i=0;i<3;i++){

??? console.log(i);

}

console.log(i);//4

if(){}for(){}等沒(méi)有自己的作用域蟹略。如果有登失,出了自己的作用域,聲明的變量就會(huì)立即被銷毀了挖炬。但是咱們可以通過(guò)匿名函數(shù)來(lái)模擬塊級(jí)作用域:


(function(){

??? //這里是我們的塊級(jí)作用域(私有作用域)

})();


嘗試塊級(jí)作用域:

function fn(){

??? (function(){

??????? var la="啦啦啦揽浙!";

??? })();

??? console.log(la);//報(bào)錯(cuò)---la is not defined

}

fn();


匿名函數(shù)的作用:

1、通過(guò)匿名函數(shù)可以實(shí)現(xiàn)閉包意敛,關(guān)于閉包在后面的文章中會(huì)重點(diǎn)講解馅巷。在這里簡(jiǎn)單介紹一下:閉包是可以訪問(wèn)在函數(shù)作用域內(nèi)定義的變量的函數(shù)。若要?jiǎng)?chuàng)建一個(gè)閉包草姻,往往都需要用到匿名函數(shù)钓猬。

2、模擬塊級(jí)作用域撩独,減少全局變量敞曹。執(zhí)行完匿名函數(shù),存儲(chǔ)在內(nèi)存中相對(duì)應(yīng)的變量會(huì)被銷毀综膀,從而節(jié)省內(nèi)存澳迫。再者,在大型多人開發(fā)的項(xiàng)目中剧劝,使用塊級(jí)作用域橄登,會(huì)大大降低命名沖突的問(wèn)題,從而避免產(chǎn)生災(zāi)難性的后果讥此。自此開發(fā)者再也不必?fù)?dān)心搞亂全局作用域了拢锹。


執(zhí)行上下文:



OOP



Object.create()方法創(chuàng)建一個(gè)新對(duì)象,使用現(xiàn)有的對(duì)象來(lái)提供新創(chuàng)建的對(duì)象的__proto__萄喳。

用于繼承Person.prototype,避免對(duì)Person.prototype造成污染


bind函數(shù)沒(méi)有prototype屬性




hasOwnProperty()?方法會(huì)返回一個(gè)布爾值卒稳,指示對(duì)象自身屬性中是否具有指定的屬性(也就是,是否有指定的鍵)取胎。



繼承:

第一種不可以展哭,會(huì)污染Person.prototype屬性

js繼承的6種方式

想要繼承,就必須要提供個(gè)父類(繼承誰(shuí)闻蛀,提供繼承的屬性)

一匪傍、原型鏈繼承


重點(diǎn):讓新實(shí)例的原型等于父類的實(shí)例。

特點(diǎn):1觉痛、實(shí)例可繼承的屬性有:實(shí)例的構(gòu)造函數(shù)的屬性役衡,父類構(gòu)造函數(shù)屬性,父類原型的屬性薪棒。(新實(shí)例不會(huì)繼承父類實(shí)例的屬性J中)

缺點(diǎn):1榕莺、新實(shí)例無(wú)法向父類構(gòu)造函數(shù)傳參。

2棵介、繼承單一钉鸯。

3、所有新實(shí)例都會(huì)共享父類實(shí)例的屬性邮辽。(原型上的屬性是共享的唠雕,一個(gè)實(shí)例修改了原型屬性,另一個(gè)實(shí)例的原型屬性也會(huì)被修改6质觥)

二岩睁、借用構(gòu)造函數(shù)繼承


重點(diǎn):用.call()和.apply()將父類構(gòu)造函數(shù)引入子類函數(shù)(在子類函數(shù)中做了父類函數(shù)的自執(zhí)行(復(fù)制))

特點(diǎn):1、只繼承了父類構(gòu)造函數(shù)的屬性揣云,沒(méi)有繼承父類原型的屬性捕儒。

2、解決了原型鏈繼承缺點(diǎn)1邓夕、2刘莹、3。

3翎迁、可以繼承多個(gè)構(gòu)造函數(shù)屬性(call多個(gè))栋猖。

4、在子實(shí)例中可向父實(shí)例傳參汪榔。

缺點(diǎn):1、只能繼承父類構(gòu)造函數(shù)的屬性肃拜。

2痴腌、無(wú)法實(shí)現(xiàn)構(gòu)造函數(shù)的復(fù)用。(每次用每次都要重新調(diào)用)

3燃领、每個(gè)新實(shí)例都有父類構(gòu)造函數(shù)的副本士聪,臃腫。

三猛蔽、組合繼承(組合原型鏈繼承和借用構(gòu)造函數(shù)繼承)(常用)


重點(diǎn):結(jié)合了兩種模式的優(yōu)點(diǎn)剥悟,傳參和復(fù)用

特點(diǎn):1、可以繼承父類原型上的屬性曼库,可以傳參区岗,可復(fù)用。

2毁枯、每個(gè)新實(shí)例引入的構(gòu)造函數(shù)屬性是私有的慈缔。

缺點(diǎn):調(diào)用了兩次父類構(gòu)造函數(shù)(耗內(nèi)存),子類的構(gòu)造函數(shù)會(huì)代替原型上的那個(gè)父類構(gòu)造函數(shù)种玛。

四藐鹤、原型式繼承


重點(diǎn):用一個(gè)函數(shù)包裝一個(gè)對(duì)象瓤檐,然后返回這個(gè)函數(shù)的調(diào)用,這個(gè)函數(shù)就變成了個(gè)可以隨意增添屬性的實(shí)例或?qū)ο笥榻凇bject.create()就是這個(gè)原理挠蛉。

特點(diǎn):類似于復(fù)制一個(gè)對(duì)象,用函數(shù)來(lái)包裝肄满。

缺點(diǎn):1碌秸、所有實(shí)例都會(huì)繼承原型上的屬性。

2悄窃、無(wú)法實(shí)現(xiàn)復(fù)用讥电。(新實(shí)例屬性都是后面添加的)

五、寄生式繼承


重點(diǎn):就是給原型式繼承外面套了個(gè)殼子轧抗。

優(yōu)點(diǎn):沒(méi)有創(chuàng)建自定義類型恩敌,因?yàn)橹皇翘琢藗€(gè)殼子返回對(duì)象(這個(gè)),這個(gè)函數(shù)順理成章就成了創(chuàng)建的新對(duì)象横媚。

缺點(diǎn):沒(méi)用到原型纠炮,無(wú)法復(fù)用。

六灯蝴、寄生組合式繼承(常用)

寄生:在函數(shù)內(nèi)返回對(duì)象然后調(diào)用

組合:1恢口、函數(shù)的原型等于另一個(gè)實(shí)例。2穷躁、在函數(shù)中用apply或者call引入另一個(gè)構(gòu)造函數(shù)耕肩,可傳參


重點(diǎn):修復(fù)了組合繼承的問(wèn)題

繼承這些知識(shí)點(diǎn)與其說(shuō)是對(duì)象的繼承,更像是函數(shù)的功能用法问潭,如何用函數(shù)做到復(fù)用猿诸,組合,這些和使用繼承的思考是一樣的狡忙。上述幾個(gè)繼承的方法都可以手動(dòng)修復(fù)他們的缺點(diǎn)梳虽,但就是多了這個(gè)手動(dòng)修復(fù)就變成了另一種繼承模式。

這些繼承模式的學(xué)習(xí)重點(diǎn)是學(xué)它們的思想灾茁,不然你會(huì)在coding書本上的例子的時(shí)候窜觉,會(huì)覺(jué)得明明可以直接繼承為什么還要搞這么麻煩。就像原型式繼承它用函數(shù)復(fù)制了內(nèi)部對(duì)象的一個(gè)副本北专,這樣不僅可以繼承內(nèi)部對(duì)象的屬性禀挫,還能把函數(shù)(對(duì)象,來(lái)源內(nèi)部對(duì)象的返回)隨意調(diào)用逗余,給它們添加屬性特咆,改個(gè)參數(shù)就可以改變?cè)蛯?duì)象,而這些新增的屬性也不會(huì)相互影響。

Javascript是弱類型腻格,不想java画拾,沒(méi)有絕對(duì)的機(jī)制去實(shí)現(xiàn)參數(shù)重載,因?yàn)楹瘮?shù)不確定菜职,傳入個(gè)數(shù)可以任意青抛。










正則表達(dá)式:






垃圾回收機(jī)制

垃圾回收

JavaScript 中的內(nèi)存管理是自動(dòng)執(zhí)行的,而且是不可見(jiàn)的酬核。我們創(chuàng)建基本類型蜜另、對(duì)象、函數(shù)……所有這些都需要內(nèi)存嫡意。

當(dāng)不再需要某樣?xùn)|西時(shí)會(huì)發(fā)生什么? JavaScript 引擎是如何發(fā)現(xiàn)并清理它?

可達(dá)性

JavaScript 中內(nèi)存管理的主要概念是可達(dá)性举瑰。

簡(jiǎn)單地說(shuō),“可達(dá)性” 值就是那些以某種方式可訪問(wèn)或可用的值蔬螟,它們被保證存儲(chǔ)在內(nèi)存中此迅。

1. 有一組基本的固有可達(dá)值,由于顯而易見(jiàn)的原因無(wú)法刪除旧巾。例如:

本地函數(shù)的局部變量和參數(shù)

當(dāng)前嵌套調(diào)用鏈上的其他函數(shù)的變量和參數(shù)

全局變量

還有一些其他的耸序,內(nèi)部的

這些值稱為根。

2. 如果引用或引用鏈可以從根訪問(wèn)任何其他值鲁猩,則認(rèn)為該值是可訪問(wèn)的坎怪。

例如,如果局部變量中有對(duì)象廓握,并且該對(duì)象具有引用另一個(gè)對(duì)象的屬性搅窿,則該對(duì)象被視為可達(dá)性, 它引用的那些也是可以訪問(wèn)的疾棵,詳細(xì)的例子如下戈钢。

JavaScript 引擎中有一個(gè)后臺(tái)進(jìn)程稱為垃圾回收器,它監(jiān)視所有對(duì)象是尔,并刪除那些不可訪問(wèn)的對(duì)象。

一個(gè)簡(jiǎn)單的例子

下面是最簡(jiǎn)單的例子:

這里箭頭表示一個(gè)對(duì)象引用开仰。全局變量“user”引用對(duì)象?{name:“John”}?(為了簡(jiǎn)潔起見(jiàn)拟枚,我們將其命名為John)。John 的?“name”?屬性存儲(chǔ)一個(gè)基本類型众弓,因此它被繪制在對(duì)象中恩溅。

如果?user?的值被覆蓋,則引用丟失:

現(xiàn)在?John?變成不可達(dá)的狀態(tài)谓娃,沒(méi)有辦法訪問(wèn)它脚乡,沒(méi)有對(duì)它的引用。垃圾回收器將丟棄?John?數(shù)據(jù)并釋放內(nèi)存。

兩個(gè)引用

現(xiàn)在讓我們假設(shè)我們將引用從?user?復(fù)制到?admin:

現(xiàn)在如果我們做同樣的事情:

該對(duì)象仍然可以通過(guò)?admin?全局變量訪問(wèn)奶稠,所以它在內(nèi)存中俯艰。如果我們也覆蓋admin,那么它可以被釋放锌订。

相互關(guān)聯(lián)的對(duì)象

現(xiàn)在來(lái)看一個(gè)更復(fù)雜的例子竹握, family 對(duì)象:


函數(shù)?marry?通過(guò)給兩個(gè)對(duì)象彼此提供引用來(lái)“聯(lián)姻”它們,并返回一個(gè)包含兩個(gè)對(duì)象的新對(duì)象辆飘。


到目前為止啦辐,所有對(duì)象都是可訪問(wèn)的。

現(xiàn)在讓我們刪除兩個(gè)引用:

僅僅刪除這兩個(gè)引用中的一個(gè)是不夠的蜈项,因?yàn)樗袑?duì)象仍然是可訪問(wèn)的芹关。

但是如果我們把這兩個(gè)都刪除,那么我們可以看到?John?不再有傳入的引用:


輸出引用無(wú)關(guān)緊要紧卒。只有傳入的對(duì)象才能使對(duì)象可訪問(wèn)侥衬,因此,John?現(xiàn)在是不可訪問(wèn)的常侦,并將從內(nèi)存中刪除所有不可訪問(wèn)的數(shù)據(jù)浇冰。


無(wú)法訪問(wèn)的數(shù)據(jù)塊

有可能整個(gè)相互連接的對(duì)象變得不可訪問(wèn)并從內(nèi)存中刪除。

源對(duì)象與上面的相同聋亡。然后:


這個(gè)例子說(shuō)明了可達(dá)性的概念是多么重要肘习。

很明顯,John和Ann仍然鏈接在一起坡倔,都有傳入的引用漂佩。但這還不夠。

“family”對(duì)象已經(jīng)從根上斷開了鏈接罪塔,不再有對(duì)它的引用投蝉,因此下面的整個(gè)塊變得不可到達(dá),并將被刪除征堪。

內(nèi)部算法

基本的垃圾回收算法稱為“標(biāo)記-清除”瘩缆,定期執(zhí)行以下“垃圾回收”步驟:

垃圾回收器獲取根并“標(biāo)記”(記住)它們。

然后它訪問(wèn)并“標(biāo)記”所有來(lái)自它們的引用佃蚜。

然后它訪問(wèn)標(biāo)記的對(duì)象并標(biāo)記它們的引用庸娱。所有被訪問(wèn)的對(duì)象都被記住,以便以后不再訪問(wèn)同一個(gè)對(duì)象兩次谐算。

以此類推熟尉,直到有未訪問(wèn)的引用(可以從根訪問(wèn))為止。

除標(biāo)記的對(duì)象外洲脂,所有對(duì)象都被刪除斤儿。

例如,對(duì)象結(jié)構(gòu)如下:


我們可以清楚地看到右邊有一個(gè)“不可到達(dá)的塊”。現(xiàn)在讓我們看看“標(biāo)記并清除”垃圾回收器如何處理它往果。




現(xiàn)在進(jìn)程中不能訪問(wèn)的對(duì)象被認(rèn)為是不可訪問(wèn)的疆液,將被刪除:

這就是垃圾收集的工作原理。JavaScript引擎應(yīng)用了許多優(yōu)化棚放,使其運(yùn)行得更快枚粘,并且不影響執(zhí)行。

一些優(yōu)化:

分代回收——對(duì)象分為兩組:“新對(duì)象”和“舊對(duì)象”飘蚯。許多對(duì)象出現(xiàn)馍迄,完成它們的工作并迅速結(jié) ,它們很快就會(huì)被清理干凈局骤。那些活得足夠久的對(duì)象攀圈,會(huì)變“老”,并且很少接受檢查峦甩。

增量回收——如果有很多對(duì)象赘来,并且我們?cè)噲D一次遍歷并標(biāo)記整個(gè)對(duì)象集,那么可能會(huì)花費(fèi)一些時(shí)間凯傲,并在執(zhí)行中會(huì)有一定的延遲犬辰。因此,引擎試圖將垃圾回收分解為多個(gè)部分冰单。然后幌缝,各個(gè)部分分別執(zhí)行。這需要額外的標(biāo)記來(lái)跟蹤變化诫欠,這樣有很多微小的延遲涵卵,而不是很大的延遲。

空閑時(shí)間收集——垃圾回收器只在 CPU 空閑時(shí)運(yùn)行荒叼,以減少對(duì)執(zhí)行的可能影響轿偎。


面試怎么回答

1)問(wèn)什么是垃圾

一般來(lái)說(shuō)沒(méi)有被引用的對(duì)象就是垃圾,就是要被清除被廓, 有個(gè)例外如果幾個(gè)對(duì)象引用形成一個(gè)環(huán)坏晦,互相引用,但根訪問(wèn)不到它們嫁乘,這幾個(gè)對(duì)象也是垃圾英遭,也要被清除。

2)如何檢垃圾

一種算法是?標(biāo)記-清除?算法亦渗,另一種是引用計(jì)數(shù)(主要用在IE游覽器)


call()、apply()

apply方法能劫持另外一個(gè)對(duì)象的方法汁尺,繼承另外一個(gè)對(duì)象的屬性

Function.apply(obj,args)方法能接收兩個(gè)參數(shù)法精,第一個(gè)參數(shù)是在其中運(yùn)行函數(shù)的作用域,另一個(gè)是參數(shù)數(shù)組。其中搂蜓,第二個(gè)參數(shù)可以是數(shù)組狼荞,也可以是arguments對(duì)象

obj:這個(gè)對(duì)象將代替Function類里this對(duì)象

args:這個(gè)是數(shù)組,它將作為參數(shù)傳給Function(args–>arguments)


學(xué)生類里沒(méi)有給name和age屬性賦值啊帮碰,為什么又存在這兩個(gè)屬性的值呢相味,這個(gè)就是apply的神奇之處。

分析:Person.apply(this,arguments);

this:代表的是student殉挽,表示將Person中的this指向student丰涉。

arguments:是一個(gè)數(shù)組,在例子中表示[‘A','10','一年級(jí)']斯碌;

通俗一點(diǎn)講就是:用student去執(zhí)行Person這個(gè)類里面的內(nèi)容一死,在Person這個(gè)類里面存在this.name等之類的語(yǔ)句,這樣就講屬性創(chuàng)建到了student對(duì)象里面.

apply()和call()的作用是一樣的傻唾,他們的區(qū)別僅在于接收參數(shù)的方式不同投慈,call()需要把參數(shù)一個(gè)個(gè)列出來(lái)。

call()的用法

在Student函數(shù)里面可以將apply中修改成如下:


3.什么情況下用apply(),什么情況下用call()

至于是使用apply()還是call()冠骄,取決于采取那種給函數(shù)傳遞參數(shù)的方式最方便伪煤。

如果打算直接傳入arguments對(duì)象,或者是數(shù)組凛辣,并且參數(shù)列表相同則使用apply()抱既;否則,選擇call()可能更合適蟀给。

例:apply示例里面?zhèn)鬟f了參數(shù)arguments蝙砌,并且在調(diào)用Person的時(shí)候參數(shù)的列表是對(duì)應(yīng)一致的,也就是Person和Student的參數(shù)列表前兩位是一致的跋理,就可以采用apply择克。

如果我的Person的參數(shù)列表是這樣的(age,name)而Student的參數(shù)列表是(name,age,grade),這樣的就可以用call來(lái)實(shí)現(xiàn)了Person.call(this,age,name,grade);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末前普,一起剝皮案震驚了整個(gè)濱河市肚邢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拭卿,老刑警劉巖骡湖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異峻厚,居然都是意外死亡响蕴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門惠桃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)浦夷,“玉大人辖试,你說(shuō)我怎么就攤上這事∨” “怎么了罐孝?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肥缔。 經(jīng)常有香客問(wèn)我莲兢,道長(zhǎng),這世上最難降的妖魔是什么续膳? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任改艇,我火速辦了婚禮,結(jié)果婚禮上姑宽,老公的妹妹穿的比我還像新娘遣耍。我一直安慰自己,他們只是感情好炮车,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布舵变。 她就那樣靜靜地躺著,像睡著了一般瘦穆。 火紅的嫁衣襯著肌膚如雪纪隙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天扛或,我揣著相機(jī)與錄音绵咱,去河邊找鬼。 笑死熙兔,一個(gè)胖子當(dāng)著我的面吹牛悲伶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播住涉,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼麸锉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了舆声?” 一聲冷哼從身側(cè)響起花沉,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎媳握,沒(méi)想到半個(gè)月后碱屁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛾找,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年娩脾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片打毛。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晦雨,死狀恐怖架曹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闹瞧,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布展辞,位于F島的核電站奥邮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏非剃。R本人自食惡果不足惜趣竣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一冷蚂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蘸朋,春花似錦、人聲如沸扣唱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)噪沙。三九已至炼彪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間正歼,已是汗流浹背辐马。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留局义,地道東北人喜爷。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像萄唇,于是被迫代替她去往敵國(guó)和親檩帐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • JavaScript語(yǔ)言精粹 前言 約定:=> 表示參考相關(guān)文章或書籍; JS是JavaScript的縮寫穷绵。 本書...
    微笑的AK47閱讀 581評(píng)論 0 3
  • ??面向?qū)ο螅∣bject-Oriented仲墨,OO)的語(yǔ)言有一個(gè)標(biāo)志勾缭,那就是它們都有類的概念,而通過(guò)類可以創(chuàng)建任意...
    霜天曉閱讀 2,109評(píng)論 0 6
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,208評(píng)論 0 3
  • 第一章 錯(cuò)誤處理: 錯(cuò)誤: 程序運(yùn)行過(guò)程中目养,導(dǎo)致程序無(wú)法正常執(zhí)行的現(xiàn)象(即bug) 現(xiàn)象: 程序一旦出錯(cuò)俩由,默認(rèn)會(huì)報(bào)...
    fastwe閱讀 1,118評(píng)論 0 1
  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門語(yǔ)言來(lái)說(shuō)都是核心的概念癌蚁。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句幻梯,而且...
    道無(wú)虛閱讀 4,566評(píng)論 0 5