JavaScript面試考點(diǎn)

1即碗、JS 如何使屬性或者對(duì)象不能被改變?

1)對(duì)象常量

結(jié)合writable: false和configurable: false就可以創(chuàng)建一個(gè)真正的常量屬性(不可修改涝桅、重定義或者刪除)拜姿。

2)禁止擴(kuò)展

如果想要禁止一個(gè)對(duì)象添加新屬性并且保留已有屬性,可以使用Object.preventExtensions()冯遂。

3)密封

Object.seal()會(huì)創(chuàng)建一個(gè)“密封”的對(duì)象蕊肥,實(shí)際上是會(huì)在一個(gè)現(xiàn)有對(duì)象上調(diào)用Object.preventExtensions(…)并把所有現(xiàn)有屬性標(biāo)記為configurable: false。所以蛤肌,密封后不僅不能添加新屬性壁却,也不能重新配置或者刪除任何現(xiàn)有屬性(但是可以修改屬性的值)

4)凍結(jié)

Object.freeze()會(huì)創(chuàng)建一個(gè)凍結(jié)對(duì)象裸准,實(shí)際上會(huì)在一個(gè)現(xiàn)有對(duì)象上調(diào)用Object.seal(…)并把所有“數(shù)據(jù)訪問(wèn)”屬性標(biāo)記為writable: false展东,這樣就無(wú)法修改它們的值了。

最后炒俱,注意一點(diǎn)盐肃,所有方法創(chuàng)建的都是淺不變性爪膊。就是說(shuō),它們只會(huì)影響目標(biāo)對(duì)象和它的直接屬性砸王,如果目標(biāo)對(duì)象引用了其他對(duì)象(數(shù)組推盛、對(duì)象、函數(shù)等)谦铃,其他對(duì)象的內(nèi)容不受影響耘成,仍然可變

2驹闰、!=瘪菌、== 、!==嘹朗、===的用法和區(qū)別

== 和 != 比較若類型不同师妙,先償試轉(zhuǎn)換類型,再作值比較骡显,最后返回值比較結(jié)果 疆栏;

=== 和 !== 只有在相同類型下,才會(huì)比較其值。(值和類型都相同的情況下比較)惫谤;

==, 兩邊值類型不同的時(shí)候珠洗,要先進(jìn)行類型轉(zhuǎn)換溜歪,再比較;

===许蓖,不做類型轉(zhuǎn)換蝴猪,類型不同的一定不等。

3膊爪、function a(){} 和 var a = function(){}的區(qū)別

當(dāng)我們使用a方法的時(shí)候自阱,是沒(méi)有問(wèn)題的,如果使用b方法米酬,會(huì)報(bào)一個(gè)undefined錯(cuò)誤沛豌。

這是因?yàn)椋?b>function a()方法已經(jīng)被提前加載好了,所以a方法存在赃额。var b會(huì)被提升加派,但是并沒(méi)有聲明賦值,方法必須是腳本執(zhí)行到相應(yīng)位置跳芳,才會(huì)被加載芍锦,所以提前使用b方法會(huì)報(bào)undefined錯(cuò)誤。

變量提升

4飞盆、function的length屬性

function的length屬性表示該函數(shù)的形參個(gè)數(shù)娄琉。

因?yàn)閒unction它是一個(gè)對(duì)象次乓,所以這個(gè)length屬性可以往它的原型找,但是function的原型length值理所當(dāng)然的為0孽水。因?yàn)?b>函數(shù)的形參個(gè)數(shù)是定義函數(shù)時(shí)才定的檬输。

Function這個(gè)構(gòu)造器本身也是一個(gè)函數(shù),它接受至少一個(gè)參數(shù)匈棘,這個(gè)參數(shù)是定義函數(shù)后的函數(shù)體丧慈。

function的arguments的length屬性。arguments它表示函數(shù)傳入實(shí)際參數(shù)的個(gè)數(shù)主卫。

5逃默、JS 中封裝、繼承及多態(tài)實(shí)現(xiàn)

1)封裝

封裝是指把客觀事物封裝成抽象的類簇搅,并且類可以把自己的數(shù)據(jù)(屬性)和對(duì)數(shù)據(jù)的操作(方法)只讓可信的類或者對(duì)象操作完域,對(duì)不可信的進(jìn)行信息隱藏。

2)繼承

繼承是指可以讓某個(gè)類型的對(duì)象獲得另一個(gè)類型的對(duì)象的屬性的方法瘩将。它可以使用現(xiàn)有類的所有功能吟税,并在無(wú)需重新編寫(xiě)原來(lái)的類的情況下對(duì)這些功能進(jìn)行擴(kuò)展。 通過(guò)繼承創(chuàng)建的新類稱為“子類”姿现,被繼承的類稱為“基類”肠仪、或“父類”。

我們常見(jiàn)的繼承有:

a备典、原型繼承:直接讓子類的原型對(duì)象指向父類實(shí)例异旧,當(dāng)子類實(shí)例找不到對(duì)應(yīng)的屬性和方法時(shí),就會(huì)往它的原型對(duì)象提佣,也就是父類實(shí)例上找吮蛹,從而實(shí)現(xiàn)對(duì)父類的屬性和方法的繼承。屬于引用類型傳值拌屏,引用副本實(shí)例屬性的修改必然會(huì)引起其他副本實(shí)例屬性的修改潮针。

b、call繼承:構(gòu)造函數(shù)繼承倚喂,即在子類的構(gòu)造函數(shù)中執(zhí)行父類的構(gòu)造函數(shù)每篷,并為其綁定子類的this,讓父類的構(gòu)造函數(shù)把成員屬性和方法都掛到子類的this上去务唐。繼承不到父類原型上的屬性和方法雳攘。

c、組合式繼承:原型繼承+call繼承枫笛。在子類的構(gòu)造函數(shù)中通過(guò)Parent.call(this)繼承父類的屬性吨灭,然后改變子類的原型為new Parent()來(lái)繼承父類的函數(shù)。創(chuàng)建子類實(shí)例都會(huì)執(zhí)行了兩次構(gòu)造函數(shù)(Parent.call()和new Parent())刑巧,雖然這并不影響對(duì)父類的繼承喧兄,但子類創(chuàng)建實(shí)例時(shí)无畔,原型中會(huì)存在兩份相同的屬性和方法。

d吠冤、寄生組合式繼承:為了解決每次創(chuàng)建子類實(shí)例都執(zhí)行了兩次構(gòu)造函數(shù)的問(wèn)題浑彰,私有的只拿私有的,用call來(lái)做拯辙。共有只拿共有的郭变,用Object.create()來(lái)做。

e涯保、es6 extends 繼承:通過(guò)關(guān)鍵字extends實(shí)現(xiàn)子類繼承父類的私有和公有诉濒,這里需要注意如果子類里面寫(xiě)了constructor,就必須寫(xiě)super否則會(huì)報(bào)錯(cuò)夕春。

3)多態(tài)

多態(tài)是指一個(gè)類實(shí)例的相同方法在不同情形有不同表現(xiàn)形式未荒。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口。

a及志、函數(shù)重載(overload):指在同一作用域內(nèi)片排,可以有一組具有相同函數(shù)名,不同參數(shù)列表的函數(shù)速侈。

JS函數(shù)不支持多態(tài)率寡,但是事實(shí)上JS函數(shù)是無(wú)態(tài)的,支持任意長(zhǎng)度锌畸,類型的參數(shù)列表勇劣。如果同時(shí)定義了多個(gè)同名函數(shù),則以最后一個(gè)函數(shù)為準(zhǔn)潭枣。

js通過(guò)函數(shù)名找到對(duì)應(yīng)的函數(shù)對(duì)象;然后根據(jù)函數(shù)按照定義時(shí)的參數(shù)幻捏,和表達(dá)式參數(shù)列表按順序匹配盆犁,多余的參數(shù)舍去,不夠的參數(shù)按undefined處理篡九;然后執(zhí)行函數(shù)代碼谐岁。

b、函數(shù)覆寫(xiě)(override):方法名相同榛臼,后者覆蓋前者伊佃。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沛善,隨后出現(xiàn)的幾起案子航揉,更是在濱河造成了極大的恐慌,老刑警劉巖金刁,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帅涂,死亡現(xiàn)場(chǎng)離奇詭異议薪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)媳友,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)斯议,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人醇锚,你說(shuō)我怎么就攤上這事哼御。” “怎么了焊唬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵恋昼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我求晶,道長(zhǎng)焰雕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任芳杏,我火速辦了婚禮矩屁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘爵赵。我一直安慰自己吝秕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布空幻。 她就那樣靜靜地躺著烁峭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秕铛。 梳的紋絲不亂的頭發(fā)上约郁,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音但两,去河邊找鬼鬓梅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谨湘,可吹牛的內(nèi)容都是我干的绽快。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼紧阔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坊罢!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起擅耽,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤活孩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后秫筏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诱鞠,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挎挖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了航夺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕉朵。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阳掐,靈堂內(nèi)的尸體忽然破棺而出始衅,到底是詐尸還是另有隱情,我是刑警寧澤缭保,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布汛闸,位于F島的核電站,受9級(jí)特大地震影響艺骂,放射性物質(zhì)發(fā)生泄漏诸老。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一钳恕、第九天 我趴在偏房一處隱蔽的房頂上張望别伏。 院中可真熱鬧,春花似錦忧额、人聲如沸厘肮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)类茂。三九已至,卻和暖如春托嚣,著一層夾襖步出監(jiān)牢的瞬間巩检,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工示启, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碴巾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓丑搔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親提揍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啤月,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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