在ecmascript v3中,給function原型定義了這兩個方法,這兩個方法的作用都是一樣的:使用這兩個方法可以像呼叫其他物件方法一樣呼叫函式,這句話是從書上抄的,至少我是沒讀明白這是什麼意思。
下面說簡單易懂的,先看段**:
functionintroduce(name,age)
var p=new
people();
introduce.call(p,"windking",20);
就說上面的這段**,用了call之後,introduce就成了p的方法,不知道這樣說你明白了麼?
使用了call方法,上述的**就等同於了這個**:
functionpeople(name,age)
; }
我把應用總結為兩條:
1.共享方法。先看**:
functionintroduce(name,age)
這是乙個自我介紹的方法,現在假設有乙個男孩的類,和乙個女孩的類(在這裡我只是為了演示,在實際中,會用乙個people的父類),因為他們的introduce都是一樣的,於是我們就可以共享這個方法。
functionboy()
; }
同理,girl中也是一樣,這樣的話,我們就可以避免寫**了。其實這個有些牽強,因為我們完全也可以寫成:
functionboy()
}
functionboy()
; }
是不是簡單了很多呢?如果引數很多的話,那麼是不是不用再寫那麼一場串密密麻麻的引數了呢!
2.跨域呼叫 www.jbxue.com
乙個簡單的例子(僅為演示,無任何價值):
functionboy(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...