js大公司面試題——方法執(zhí)行順序

前言

對于方法執(zhí)行的順序,講真在面試時遇到這題目一開始挺開心的,畢竟自己也大概了解,但是這題考察的并不是一個知識點那么簡單,再加上在原型的問題上繞來繞去地可以說十分磨心態(tài)的。


直接上題:

    function Number() {
        getNumber=function () {
            console.log(0)
        }
        return this;
    }
    Number.getNumber=function () {
        console.log(1)
    }
    Number.prototype.getNumber=function () {
        console.log(2)
    }
    var getNumber=function () {
        console.log(3)
    }
    function getNumber() {
        console.log(4)
    }

    
    Number.getNumber();//靜態(tài)方法
    getNumber();//普通函數
    Number().getNumber();//執(zhí)行Number()后執(zhí)行內部函數
    getNumber();//普通函數
    new Number.getNumber();//靜態(tài)方法的實例
    new Number().getNumber();//實例對象的方法
    new new Number().getNumber();

正確的答案:

1
3
0
0
1
2
2

第一個Number.getNumber()靜態(tài)方法,沒有任何爭議;
第二個getNumber(),則涉及到函數執(zhí)行的預編譯問題,在預編譯中執(zhí)行
如果遇到執(zhí)行的是function,則會先以查找原型鏈的方式查找到方法,并執(zhí)行;但如果想題目這種有function和函數表達式var、letconst等,則會先執(zhí)行function的方法,即上面所說的查找原型鏈,因此這里先執(zhí)行了

function  getNumber() {
   console.log(4)
}

而后執(zhí)行

var getNumber=function () {
  console.log(3)
}

那么,預編譯完成后則先執(zhí)行的function被函數表達式覆蓋,而執(zhí)行的是函數表達式的方法——第一坑
第三個式子Number().getNumber(),當執(zhí)行Number()后返回了this,此時指向的是Window,則這是相對于執(zhí)行了this.getNumber(),而內部函數關系式的上下文為window,所以執(zhí)行內部函數
第四個式子還是執(zhí)行內部函數,如果看到這還不明白,可以試著把第三個式子拆分為Number()getNumber()再F12調試看this,你就明白了——第二坑
第五個式子new了靜態(tài)函數,即調用了靜態(tài)函數
第六個、第七個式子都是實例對象的成員方法


以上均是本人通過個人理解與查閱資料而來,如果有錯誤的地方請指出,謝謝?。?br> 另外覺得文章寫得不錯的話可以點贊并關注我哦~

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 前端開發(fā)面試題 面試題目: 根據你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,694評論 0 7
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,685評論 1 32
  • 繼承 一、混入式繼承 二、原型繼承 利用原型中的成員可以被和其相關的對象共享這一特性,可以實現繼承,這種實現繼承的...
    magic_pill閱讀 1,138評論 0 3
  • 1,javascript 基礎知識 Array對象 Array對象屬性 Arrray對象方法 Date對象 Dat...
    Yuann閱讀 1,158評論 0 1
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,264評論 0 38

友情鏈接更多精彩內容