new Foo getName 經典面試題

2021-10-10 20:44:02 字數 1387 閱讀 2842

一道經典的面試題,下面用a b c d 標註方便講解

解析:1.foo.getname(); // 2物件.屬性 這裡foo作為函式物件,getname()作為foo的函式屬性,所以看題目b處

2.getname(); // 4

這裡主要看題目d e 處,d處為乙個函式表示式,e宣告了乙個函式

兩者內容相同,我們可以根據函式優先規則 函式宣告》變數

那e處提到題目前面

根據js自上而下執行,先執行題目e處,再把d處賦值給getname,所以覆蓋了e處

如下

//e 宣告了乙個getname函式

let getname

getname = function()

//d 函式表示式

getname = function() ;

3.foo().getname(); // 1**

​ 這裡看題目a處

​ 因為foo打了小括號,所以就是呼叫foo函式

​ 並且給全域性變數getname重新賦值

4.getname(); // 1

​ 因為前面3執行題目a處,給getname賦值了

5. new foo.getname(); // 2

​ 物件.屬性,這裡看b處

​ new foo.getname==new(foo.getname())

​ 所以這裡先呼叫了foo.getname,執行結果為2

​ 然後再例項化返回值2

6.new foo().getname(); // 3

​ 因為foo打了小括號,所以就是呼叫foo函式

​ 並且前面有new,就意味著是用new呼叫的foo函式

​ 那麼此時相當於是把foo當做了建構函式

​ 相當於(new foo()).getname()

​ 所以返回了foo例項化出來的物件,這個物件自己沒有

​ getname方法,所以就訪問原型裡的getname,既題目c處

7.new new foo().getname(); // 3

​ 這裡可以看做new((new foo()).getname())

​ 右上可得 new(3)

​ 所有例項化返回值為3

寫在最後,都是個人理解,題目講解方式參照部落格大佬排版

python經典面試 python經典面試題

基礎部分 1.將列表按照下列規則排序,補全 1.整數在前,負數在後2.正數從小到大3.負數從大到小 lst 7,8,5,4,0,2,5 補全 sorted lst,key lambda x 答案 lst 7,8,5,4,0,2,5 lst sorted lst,key lambda x int x ...

python經典程式 python經典程式

輸入輸出 判斷輸入整數是否在 0,100 之間 num eval input 請輸入乙個整數 if num 100 or num 0 判斷 0,100 print 輸入的整數小於0或大於100 else print 輸入整數在0到100之間 含 temps input 斐波拉列數列 a,b 0,1 ...

python經典例項 python經典例項

本書是python經典例項解析,採用基於例項的方法編寫,每個例項都會解決具體的問題和難題。主要內容有 數字 字串和元組,語句與語法,函式定義,列表 集 字典,使用者輸入和輸出等內建資料結構,類和物件,函式式和反應式程式設計,web服務,等等。python是傑出的指令碼語言,可以為應用程式注入動力,提...