var number = 5;
var obj =
})()
}var myfun = obj.fn;
myfun.call(null);
obj.fn();
console.log(window.number);
結果為:109原因解析:在定義obj的時候呀,fn()就執行了一次,此時他的this為window32720
fn: (function ()
})()
執行var myfun = obj.fn
時,便是將fn()的返回函式賦值給myfun。
執行myfun.call(null)
時,傳遞的引數是null,表明是預設繫結。(this還是指向window)
return function ()
執行obj.fn()
時,this指向的是obj
return function ()
最後執行console.log(window.number)
console.log(window.number); //20
例子借鑑前端小姐姐
var length = 10;
function fn()
var obj =
};obj.method(fn, 1);//輸出是什麼?
執行結果
?嗯嗯嗯???結果怎麼會是2,?2從哪來的????
當執行obj.method(fn, 1)
方法的時候,method
屬性的arguments
是個類陣列物件,具體可以看下圖。
此時執行arguments.fn()
的this
就指向的是arguments
物件,所以this.length
就是2,是不是隱藏的很深諾~?
關於指標的經典例題
1.用new和delete的動態記憶體分配方法,實現對任意數目的整數進行排序。view code 1 include 2 include 3 4void sortarray int int 5 6int main 723 24 輸入擬排序的整數 25for i 0 i num i 26 cin a ...
OS 關於程式併發執行的例題
1 作圖如下 2 cpu有空閒等待,在計算完程式b後的50ms內,即100ms到150ms之間處於空閒等待。由於ab程式都在不同的裝置上進行暫時不需要用到cpu,所以會有空閒等待。3 程式a無等待現象,程式b在執行時有等待現象,在b程式使用完輸入機後等待cpu將a程式計算完,即在 180ms 到 2...
關於佇列(還有廣度優先搜尋的例題)
本博文的目錄 1 佇列 2 佇列的例題 3 廣度優先搜尋的例題 1 佇列 佇列是什麼?佇列是一種特殊的線性表,與棧不同,這種線性表只允許在表的前端 我們稱為front或head 進行刪除操作,在表的後端 我們稱作rear或tail 進行插入操作。所以又叫f first i in f first o ...