DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript綜合知識 >> Javascript中call和apply
Javascript中call和apply
編輯:JavaScript綜合知識     

   一.call方法的定義

  大家在百度裡面可以搜索call,關於call的定義都很拗口。在我的理解,a.call(b,arg1,arg2..)就是a對象的方法應用到b對象上。例如如下例子:

 代碼如下  

function add(a,b)
{
alert(a+b);
}
function reduce(a,b)
{
alert(a-b);
}
add.call(reduce,1,3) //將add方法運用到reduce,結果為4

  二.call可以改變this指向

  如下例:

 代碼如下  

function b()
{
alert(this)
}
b(); //window
b.call(); //window
b.call(“a”,2,3); //a

  再看一個復雜的例子:

 代碼如下  

function Animal()
{
this.name=”animal”;
this.showName=function()
{
alert(this.name)
}
}
function Cat()
{
this.name=”cat”;
}
var animal = new Animal();
var cat = new Cat();
animal.showName(); //結果為animal
animal.showName.call(cat); //原本cat沒有showName方法,但是通過call方法將animal的showName方法應用到cat上,因此結果為cat

  三,實現繼承

  如下例子:

 代碼如下  

function Animal(name)
{
this.name=name;
this.showName=function()
{
alert(this.name)
}
}
function Cat(name)
{
Animal.call(this,name); //將Animal應用到Cat上,因此Cat擁有了Animal的所有屬性和方法
}
var cat = new Cat(“Black Cat”);
cat.showName(); //浏覽器彈出Black Cat

  四.apply用法

  apply和call的用法只有一個地方不一樣,除此之外,其他地方基本一模一樣

  a.call(b,arg1,arg2…)

  apply(b,[arg1,arg2]) //apply只有2個參數,它將call的參數(arg1,arg2…)放在一個數組中作為apply的第二參數

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved