call apply和bind的用法

2022-08-03 06:27:14 字數 603 閱讀 6340

在改變this指向的時候,經常會把這三個方法混淆,下面就詳細的整理一下三者的用法和區別

var a = 

var b =

}b.sayname.call(a, 1,2,3)

// 輸出 --> 張三 6

第乙個引數是改變 this 指向的物件

第二個引數必須是乙個陣列

使用後會自動執行

var a = 

var b =

}var arr = [1,2,3]

// 輸出 --> 張三 6

var a = 

var b =

}var c = b.sayname.bind(a,1,2,3)

// 需手動呼叫新函式 c 才會執行

c()// 輸出 --> 張三 6

這裡用乙個**來展示吧,可能看起來要稍微直觀點

方法名可含引數個數

是否自動執行

call

無數個是

兩個,第二個必須為陣列

是bind

無數個否,會返回乙個新函式

call apply和bind的原理

call 作用 call 方法就是使用乙個指定this值和若干個指定引數值的前提下呼叫摸個函式或方法。var foo function bar 如果不對this進行繫結執行bar 會返回undefined bar.call foo 1也就是說call 改變了this的指向,指向了foo 下面進行一下...

call apply和bind方法詳解

call方法 使用乙個指定的this值和單獨給出的乙個或多個引數來呼叫函式。var obj function getname name getname.call obj mei var obj function getname name,age 這兩種方法的用途很多,下面我就舉幾個例子。1.基本用法...

js中call,apply和bind方法

語法 任意函式.call 任意物件,引數1,引數2 特徵 call能呼叫函式,後面可傳入多個引數,用逗號隔開 3.價值 任意物件都能呼叫任意函式 功能 function fn a,b var obj2 fn.call obj2,你好 6 這樣就能為obj2新增乙個屬性abc,值為 你好6 原因是使用...