js方法call和apply例項解析

2021-09-08 10:14:33 字數 1246 閱讀 9787

在ecmascript v3中,給function原型定義了這兩個方法,這兩個方法的作用都是一樣的:使用這兩個方法可以像呼叫其他物件方法一樣呼叫函式,這句話是從書上抄的,至少我是沒讀明白這是什麼意思。

下面說簡單易懂的,先看段**:

function

introduce(name,age)

var p=new

people();

introduce.call(p,"windking",20);

就說上面的這段**,用了call之後,introduce就成了p的方法,不知道這樣說你明白了麼?

使用了call方法,上述的**就等同於了這個**:

function

people(name,age)

; }

我把應用總結為兩條:

1.共享方法。先看**:

function

introduce(name,age)

這是乙個自我介紹的方法,現在假設有乙個男孩的類,和乙個女孩的類(在這裡我只是為了演示,在實際中,會用乙個people的父類),因為他們的introduce都是一樣的,於是我們就可以共享這個方法。

function

boy()

; }

同理,girl中也是一樣,這樣的話,我們就可以避免寫**了。其實這個有些牽強,因為我們完全也可以寫成:

function

boy()

}

function

boy()

; }

是不是簡單了很多呢?如果引數很多的話,那麼是不是不用再寫那麼一場串密密麻麻的引數了呢!

2.跨域呼叫 www.jbxue.com

乙個簡單的例子(僅為演示,無任何價值):

function

boy(name,age) }

function

girl(name,age)

這是乙個boy和乙個girl類,然後我們寫如下的**:

var b=new boy("windking",20); 

b.boyintroduce();

var g=new girl("xuan",22); 

introduce.call(g,"xuan",22);

3,真正用處——繼承

JS中的call 和apply 方法

1 方法定義 call方法 2 常用例項 a function add a,b function sub a,b add.call sub,3,1 這個例子中的意思就是用 add 來替換 sub,add.call sub,3,1 add 3,1 所以執行結果為 alert 4 注意 js 中的函式其...

js中的call 和apply 方法

1.call 語法 obj1.call obj2 param1,param2,定義 用obj2物件來代替obj1,呼叫obj1的方法。即將obj1應用到obj2上。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 obj2 指定的新...

JS中的call 和apply 方法

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