3道值得收藏的Javascript題目,你理解嗎

2021-08-26 22:36:40 字數 1517 閱讀 5601

在網上看了幾道js的題 整理了一下 貼出來 以供參考

第一道:

function foo() this.abc = function () abc = function () ; var abc = function () } foo.prototype.abc = function () foo.abc = function () var obj = new foo(); obj.abc(); foo.abc(); abc();

我們就直接針對這輸出按順序進行分析,
執行順序

1.foo.prototype.abc = function()

//這樣之後,我們就可以用obj.abc();不懂prototype原型的,可以看這個prototype原型繼承

2.foo.abc = function()

//alert yahoo

3.var obj = new foo();

//建立乙個foo的例項obj,同時,執行了foo函式,也就是obj.abc() = function()

4.foo.abc = function()

是foo類的靜態方法,在例項化foo後執行了**片段foo.abc = function ()

//覆蓋了原來的foo.abc = function(),所以foo.abc()輸出alibaba

5.this.abc = function()

//這句話把function();

var abc = function();

//這兩句一起分析,如果沒有下一句,那麼abc是個全域性變數,abc輸出alipay

//但是因為下一句var abc之後,abc的作用域被限制在foo類裡,所以外部的abc()會顯示未定義

undefined

第二道:

f = function () ; g = function () ; (function () ; function g() } })(); alert(f()); // true or false ?

答案是false 其實很簡單 == !這是兩個不同例項的物件, 它們當然不恒等了;其次主要的就是g()是呼叫的那個方法,它呼叫區域性的function g() 而不是全域性的g = function () ; 所以在這個作用於內 全域性的f被覆蓋。最終呼叫的是 f = function f() ;

第三道:

var o = , length: 1 }; var m = o.m; alert(m()); // 請問輸出什麼? 並解釋為什麼。

答案是0 這裡的this.length 是物件function的length,而不是物件o的length。如 var m = o; alert(m.m()); 答案就是1,原題的意思同如下** var a = function () ;alert(a()); 或則 var a = function () ;alert(a.length);

勵志的語句,值得收藏

1.我們太年輕 以致都不知道以後的時光竟然還有那麼長 長得足夠讓我忘記你 足夠讓我重新喜歡乙個人 就像當初喜歡你一樣 2。乙個人如果想做他喜歡的事情 就一定要做很多他不喜歡的事情 很多很多 3。我一點也不孤獨 因為我的世界只有我乙個人已經足夠熱鬧了 4。失敗的人有兩種 一種是什麼人的話都聼 一種是什...

值得收藏的csdn部落格

這個sbcsdn沒有收藏功能,加好友關注也是徒有其表,到時侯根本就找不到了,所以自己收藏吧!在此感謝一下各位。1 小田的專欄,c primer學習筆記 2 gzshun的專欄,c 學習 3 linux裝置驅動開發 linux驅動中的非同步通知 4 android 4.0 事件輸入 event inp...

值得收藏的js原型詳解

不格網 vbuge.com 起初,地是空虛混沌,淵面黑暗 這時候一切還是null 神說,要有原型,於是就有了prototype 原型從憑空產生,於是需要乙個指向於null的特徵,人們把這種特徵叫做隱式原型,即 proto 其實也就一種指向,表達的是自己從何而來,也就是 object.prototyp...