call() 和 apply()方法的區別

2021-08-14 08:58:08 字數 997 閱讀 4138

var foo = ;

window.value = 2;

function bar()

bar();//2

bar.call(foo); // 1 改變了函式裡面this額指向,原來指向的是wingdow,現在指向的是foo這個物件;

function

test

(str)

test('jdaj');//jdaj;

var object = new

object();

object.name = 'zhangsan';

test.call(object,"sxy");//zhangsan sxy

在這個例子裡面如果直接按正常的傳遞引數輸出的只有str的值,this.name的值為空,因為這個函式裡面沒有設定this。name這個屬性,window裡面也沒有設定name屬性,所以輸出的值為空;

test.call(object,」sxy」);這句話的理解就是執行test()這個函式,執行這個函式的同時呼叫了函式本身的方法call()這個方法,call(object,『sxy』);執行test.call(object,」sxy」)正常傳遞了乙個』sxy』相當於函式裡面的str;object這個引數意思是我們原來test()函式裡面this指的是test()本身,這裡寫了object,就是把this的指向換成了object;

function

parent

(username)

}function

child

(username,password)

}var parent = new parent("zhangsan");

var child = new child("lisi","123456");

parent.hello();

child.hello();

child.world();

call 和apply 的區別

call方法 語法 call thisobj,object 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件 說明 call方法可以用來代替另乙個物件呼叫乙個方法。call方法可將乙個函式的物件上下文從初始的上下文改變為由thisobjext指定的新物件。如果沒有提供thisobj引數,那麼g...

call和apply的區別

1 方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...

call和apply的區別

如下 複製 function add a,b function reduce a,b add.call reduce,1,3 將add方法運用到reduce,結果為4 如下例 如下 複製 function b b window b.call window b.call a 2,3 a 再看乙個複雜的...