function test1 ()
function test2 (arg)
call屬於方法
call的使用是為了改變函式內部的環境變數的值,也就是this的指向,使用方式是 functionname.bind(env,arg…)
注意和bind的差別,引數必須逐個列出,不能以陣列的形式傳入
callee和caller都是屬於值
callee和caller返回的都是值的型別,只不過值都是function型別,但是他媽代表的值的型別是不同的。
call所在的位置
function test1()
function test2()
test1();
/* 列印的是test1 */
console.log(test2.caller)
/* 列印的是null */
test2();
/* 列印的是null */
callee
callee是函式內部的arguments物件的乙個屬性,它指向的是函式本身
所以我們一般為了增強遞迴函式的魯棒性==(避免中途改變函式名)==,一般會在函式內部呼叫arguments的callee屬性,而不是直接寫函式名的方式來實現遞迴
function test (num) else
}
解耦的簡單理解
重用性是物件導向設計的主要目標之一,而緊耦合便是它的敵人。當我們看到系統中乙個元件的改變迫使系統其他許多地方也發生改變的時候,就可以診斷為緊耦合了。簡單實現 class registrationmgr abstract class notifier else abstract function in...
對於解耦的理解
以三層為例子 在bll層中建立dal層的某個物件 iuserdal userdal dalabstractfactory.createuserdal 即層之間的關聯降到最低,這樣我們很容易想到引用乙個第三方來作為中間介質。這就引出了介面,在層中要建立其他層的某個物件時,用介面來接收這個物件,這個介面...
解耦 削峰 非同步的理解
隨著技術的發展分布式系統已經成為標配,分布式系統就存在著各式各樣的程序間通訊。訊息對列實際上就是程序間通訊方式的一種,是生產者消費者模式在分布式場景下的實現。訊息佇列主要由以下作用 解耦,削峰,非同步,其實還有乙個作用是提高接收著效能。我們以乙個快遞員送快遞的栗子來描述下佇列的作用。送快遞送出了煩心...