bind ,call 和apply 的區別

2021-08-20 15:22:39 字數 1057 閱讀 3988

首先這三者都是用來改變this的指向;

call()

例項

function student(name,age,grade) 

var student = new student('zhangsan','21','一年級');

alert('name:'+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);

第乙個引數是this要指向的物件,第二個引數是陣列;

例項

function person(name,age)

function student(name,age,grade)

var student = new student('小紅','21','一年級');

alert('name:'+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);

1)math.max可以實現得到陣列中最大的一項

例:math.max('1','2','3','4'); //4

var arr = ['1','2','3','4'];

2)array.protoype.push可以實現兩個陣列合併

vararr1=newarray("1"

,"2"

,"3");

vararr2=newarray("4"

,"5"

,"6");

bind()

functionfn(a, b, c) 

varfn1 = fn.bind(null,

'dot');

fn1('a'

, 'b'

, 'c');

總結:

它們第乙個引數都是要繫結給this的值,bind和call從第二個引數開始接受的是引數列表;不同的是bind方法返回值勢函式一節bind接收引數列表的使用;

apply和call的用法

應用某一物件的乙個方法,用另乙個物件替換當前物件。引數 thisobj 可選項。將被用作當前物件的物件。argarray 可選項。將被傳遞給該函式的引數陣列。說明 如果 argarray 不是乙個有效的陣列或者不是arguments物件,那麼將導致乙個 typeerror。如果沒有提供 argarr...

call 和apply 的區別

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

call和apply的區別

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