call([thisobject[,arg1 [,arg2 [,…,argn]]]])方法呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。那麼當thisobj在不同情況下是什麼樣的呢?
函式
functiona()
如果是函式的話,則this指向b函式。那麼a中的kid屬性是否在b函式中呢?由上圖可見,kid屬性存在於b的constructor中,並且可以通過b.kid訪問到,當然name除外.
2.null或者undefined
functiona()
a.call(null);
a.call(undefined);
如果是null或者undefined,則this指向window,屬性kid也存在於window中。
3.字串、數值、布林
functiona()
a.call('a');
a.call(3);
a.call(true);
如果是字串,數值,布林,則this指向其包裝型別如string,number,boolean。無法通過屬性來訪問kid。
4.陣列
functiona()
var pram = ['aaa'];
a.call(pram);
如果是陣列,則將a中this指向屬性轉換為鍵值對放入陣列中,如上面的pram會變成[「aaa」, kid: 「lily」, age: 14]。
5.物件
如果為物件,則this指向物件,較為常見,就不介紹了
Call分析(三)Call中執行的任務
我們前面說了call中有兩個跟執行緒有關的成員module process thread 和pacer thread 我們看在call建構函式中,跟這兩個成員相關的 call call 結合前面的分析,我們推出,在module process thread 的執行緒中,會執行的任務為 callsta...
Python中的call方法
在 python 中提供了 call 方法,允許建立可呼叫的物件 例項 如果類中實現了 call 方法,則可以像使用函式一樣使用類。usr bin env python coding utf 8 class run object def init self pass def call self,da...
類的特殊方法 call
1.call 當執行物件名 括號時,會自動執行類中的 call 方法,怎麼用?class a def init self,name self.name name def call self,args,kwargs print 123 obj a wangjianwei obj 當執行 object ...