1.call()
語法:obj1.call(obj2[,param1,param2,…])
定義:用obj2物件來代替obj1,呼叫obj1的方法。即將obj1應用到obj2上。
說明:call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 obj2 指定的新物件。 如果沒有提供 obj2引數,那麼 global 物件被用作 obj2。
語法:obj1.call(obj2[,arrarg])
定義:用obj2物件來代替obj1,呼叫obj1的方法。即將obj1應用到obj2上。
作用:這兩個函式都是在特定的作用域中呼叫函式,能改變函式的作用域,實際上是改變函式體內 this 的值 。
3.基本用法
function add(a,b)
function sub(c,d)
function result()
}
function mycalltest()
var r = new result();
console.log(mycalltest());//9
r.addvalue = add.call(sub,4,2); //6,將add方法應用到sub上,即sub的指標指向add方法
r.subvalue = sub.call(add,4,2); //2,用add物件替換sub物件,並呼叫sub物件的方法
r.showresult(); //在js中函式也是乙個function物件,函式名即是物件引用
4.繼承特性
function add(a,b)
function sub(c,d)
function result()
}var r = new result();
r.addvalue = add.call(r,4,2); //6,r繼承add函式的所有特性
r.subvalue = sub.call(r,4,2); //2,r整合sub函式的所有特性
r.showresult();
原文:
function animal()
}
function cat()
var animal = new animal();
var cat = new cat();
//輸入結果為"cat"
animal.showname.call(cat,",");
call 的意思是把 animal 的方法放到cat上執行,原來cat是沒有showname() 方法,現在是把animal 的showname()方法放到 cat上來執行,所以this.name 應該是 cat
function animal(name)
}
function cat(name)
var cat = new cat("black cat");
cat.showname();
animal.call(this) 的意思就是使用 animal物件代替this物件,那麼 cat中不就有animal的所有屬性和方法了嗎,cat物件就能夠直接呼叫animal的方法以及屬性了.
5.多重繼承
function class10()
} function class11()
} function class2()
js中call和apply用法
1 方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...
JS中apply和call的區別
聯絡 obj 這個物件將代替 function類裡this物件,也即 function類 函式 裡的this不在是指 function 本身,而是obj args 這個是陣列型別的引數,它將作為引數傳給function args arguments 結果是還是執行 function 類方法 函式 的...
js中的apply和call函式
主要我是要解決一下幾個問題 obj 這個物件將代替function類裡this物件 args 這個是陣列,它將作為引數傳給function args arguments function.call obj,param1 param2 paramn obj 這個物件將代替function類裡this物...