var obj =
function
func
(firstname, lastname)
func.
(obj,
['a'
,'b'])
;// a linxin b
可以看到,obj 是作為函式上下文的物件,函式 func 中 this 指向了 obj 這個物件。引數 a 和 b 是放在陣列中傳入 func 函式,分別對應 func 引數的列表元素。
call( )
call 方法第乙個引數也是作為函式上下文的物件,但是後面傳入的是乙個引數列表,而不是單個陣列。
var obj =
function
func
(firstname, lastname)
func.
call
(obj,
'c',
'd')
;// c linxin d
1.改變 this 指向
var obj =
function
func()
func.
call
(obj)
;// linxin
我們知道,call 方法的第乙個引數是作為函式上下文的物件,這裡把 obj 作為引數傳給了 func,此時函式裡的 this 便指向了 obj 物件。此處 func 函式裡其實相當於
function
func()
2.借用別的物件的方法
先看例子
var
person1
=function()
varperson2
=function()
person1.
call
(this);
}var person =
newperson2()
;person.
getname()
;// linxin
從上面我們看到,person2 例項化出來的物件 person 通過 getname 方法拿到了 person1 中的 name。因為在 person2 中,person1.call(this) 的作用就是使用 person1 物件代替 this 物件,那麼 person2 就有了 person1 中的所有屬性和方法了,相當於 person2 繼承了 person1 的屬性和方法。
3.呼叫函式
function
func()
func.
call()
;// linxin
apply 與call 的區別
function call 方法 function.call thisobj arg1 arg2 argn 它們各自的定義 call 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。例如 b.call a,args1,args2 即a物件呼叫b物件的方法。它們的共同之處 都 可以用來代替另乙個物件...
apply 與call 的區別
function call 方法 function.call thisobj arg1 arg2 argn 它們各自的定義 call 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件。例如 b.call a,args1,args2 即a物件呼叫b物件的方法。它們的共同之處 都 可以用來代替另乙個物件...
apply 與call 的區別
call 方法 function.call thisobj arg1 arg2 argn 它們各自的定義 call 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件。例如 b.call a,args1,args2 即a物件呼叫b物件的方法。它們的共同之處 都 可以用來代替另乙個物件呼叫乙個方法,將乙...