js中call 方法和apply方法的使用

2022-01-17 02:31:35 字數 1970 閱讀 8449

語法: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,",");

實現繼承

function

animal(name)

}

function

cat(name)

var cat = new cat("black cat");

cat.showname();

多重繼承

function

class10()

}function

class11()

}function

class2()

function

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...