js call 方法的作用

2021-09-26 03:09:54 字數 904 閱讀 3172

先看看關於call()的官方解釋,「呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。」,看了這樣的解釋,或許讓你更摸不著頭腦了。看例子:

var x = "我是全域性變數";    //定義全域性變數x

function a()

//定義普通函式,彈出當前指標所包含的變數x的值

function f()

//返回值為「我是在函式類結構a中宣告的哦」

f.call(new a());

我的理解是,f.call(new a())就是把函式(其實也是物件)f複製到被呼叫物件「new a()」下面去解析,事實上和下面這段**的解析結果一樣:

function a()

a();

只不過此時變數x的作用域不同而已,咿…看起來好像有點繼承的味道哦,難道不是嗎?在上例中,f完全被建構函式a的實力物件繼承了,如果說這還不足以說明a.call(b)是一種繼承模式,那麼再看乙個更具有繼承味道的用法吧。

function f()

}

function e()

var c = new e();

alert(c.a); //彈出a

c.b(); //彈出b

在這個例子中,只要會使用瀏覽器的朋友,都能看得出來e完全繼承了f的屬性和方法,否則是無法解釋的,因為在e中並沒有定義屬性a和b,那麼按常理推斷在e的例項物件c中,並不會出現這兩個屬性。

js call 方法的作用

2016年09月27日 15 49 15 先看看關於call 的官方解釋,呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。看了這樣的解釋,或許讓你更摸不著頭腦了。看例子 var x 我是全域性變數 定義全域性變數x function a 定義普通函式,彈出當前指標所包含的變數x的值 functio...

js call 方法的作用

2016年09月27日 15 49 15 先看看關於call 的官方解釋,呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。看了這樣的解釋,或許讓你更摸不著頭腦了。看例子 var x 我是全域性變數 定義全域性變數x function a 定義普通函式,彈出當前指標所包含的變數x的值 functio...

js call方法使用

今天看到公司一道js面試題,如下,問使用getname方法列印出1,2,3 var name 1 var obj console.info obj.prop.getname 3 console.info obj.prop.getname.call obj 2 console.info obj.pro...