最新高清无码专区,无人区码一码二码w358cc,99在线精品国自产拍不卡,亚洲国产欧美在线成人APP,男人天堂a在线,亚洲熟妇色,伊人毛片,国产精品亚洲mnbav网站

前端程序員JavaScript面試題(3)

時間:2024-07-21 13:03:50 學人智庫

前端程序員JavaScript面試題(3)

  第六問

前端程序員JavaScript面試題(3)

  第六問 new Foo().getName() ,首先看運算符優先級括號高于new,實際執行為

  (new Foo()).getName()

  遂先執行Foo函數,而Foo此時作為構造函數卻有返回值,所以這里需要說明下js中的構造函數返回值問題。

  構造函數的返回值

  在傳統語言中,構造函數不應該有返回值,實際執行的返回值就是此構造函數的實例化對象。

  而在js中構造函數可以有返回值也可以沒有。

  1、沒有返回值則按照其他語言一樣返回實例化對象。

  image_thumb1

  2、若有返回值則檢查其返回值是否為引用類型。如果是非引用類型,如基本類型(string,number,boolean,null,undefined)則與無返回值相同,實際返回其實例化對象。

  image_thumb2

  3、若返回值是引用類型,則實際返回值為這個引用類型。

  image_thumb3

  原題中,返回的是this,而this在構造函數中本來就代表當前實例化對象,遂最終Foo函數返回實例化對象。

  之后調用實例化對象的getName函數,因為在Foo構造函數中沒有為實例化對象添加任何屬性,遂到當前對象的原型對象(prototype)中尋找getName,找到了。

  遂最終輸出3。

  第七問

  第七問, new new Foo().getName(); 同樣是運算符優先級問題。

  最終實際執行為:

  new ((new Foo()).getName)();

  先初始化Foo的實例化對象,然后將其原型上的getName函數作為構造函數再次new。

  遂最終結果為3

  最后

  就答題情況而言,第一問100%都可以回答正確,第二問大概只有50%正確率,第三問能回答正確的就不多了,第四問再正確就非常非常少了。其實此題并沒有太多刁鉆匪夷所思的用法,都是一些可能會遇到的場景,而大多數人但凡有1年到2年的工作經驗都應該完全正確才對。

  只能說有一些人太急躁太輕視了,希望大家通過此文了解js一些特性。

【前端程序員JavaScript面試題(3)】相關文章:

前端工程師面試題10-20

Web前端面試題目及答案06-30

Microsoft面試題09-04

iOS面試題07-10

公司面試題09-12

hibernate面試題10-18

英語面試題精選06-13

小升初面試題06-10

PHP面試題10-14

小升初面試題型08-24