語法:call([thisobj[,arg1[, arg2[, [,.argn]]]]]) 定義:呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。 說明: call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。 如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。
window.name = "window"
;obj =
function say()
function say2(s1,s2)
say.call(window); //window
say.call(obj); //zhangsan
say2.call(window,1,2); //和是3
再來個例子,說明call()方法第乙個引數,被呼叫的物件,不是必須的
var arr = [1,2,13];
var obj = function
(num)
obj.call
("", arr[2]);
這個例子中的意思就是用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以執行結果為:alert(4); // 注意:js 中的函式其實是物件,函式名是對 function 物件的引用。
function
add(a,b)
function
sub(a,b)
add.call(sub,3,1)
call 的意思是把 animal 的方法放到cat上執行,原來cat是沒有showname() 方法,現在是把animal 的showname()方法放到 cat上來執行,所以this.name 應該是 cat
function
animal
()
} function
cat()
var animal = new animal();
var cat = new cat();
//輸入結果為"cat"
animal.showname.call(cat,",");
實現繼承
functionfunctionanimal(name)
}
function
cat(name)
var cat = new cat("black cat");
cat.showname();
多重繼承
function
class10()
}function
class11()
}function
class2()
say()
////
//改為
我們在改造下say函式,加上引數。
function
say(name) ;
//輸出 "hello finley"
function
foo(x, y)
//chrome下輸出 1 2 number
foo.call(100, 1, 2);
//3 4 boolean
//undefined undefined window
);//
undefined undefined window
如果是null或undefined,則指向全域性物件,對於瀏覽器就是window。
如果是在嚴格模式下,則會指向undefined。
JS中的call 和apply 方法
1 方法定義 call方法 2 常用例項 a function add a,b function sub a,b add.call sub,3,1 這個例子中的意思就是用 add 來替換 sub,add.call sub,3,1 add 3,1 所以執行結果為 alert 4 注意 js 中的函式其...
js中的call 和apply 方法
1.call 語法 obj1.call obj2 param1,param2,定義 用obj2物件來代替obj1,呼叫obj1的方法。即將obj1應用到obj2上。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 obj2 指定的新...
JS中的call 和apply 方法
一 方法定義 1 call 語法 call thisobj,object 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒有提供 this...