麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

Javascript中call的兩種用法實例

2019-11-20 21:28:12
字體:
來源:轉載
供稿:網友

用法一(常見用法):

表現形式為:一個對象.方法.call(另一個對象),意義是用另一個對象代替當前對象,執行當前對象的方法。先看示例:

復制代碼 代碼如下:

function Class1(){
    this.name = "class1";
    this.showName = function(){
        alert(this.name);
    }
}
function Class2(){
    this.name = "class2";
}
var c1 = new Class1();
var c2 = new Class2();

c1.showName.call(c2);
c2.showName();        //不能執行

我們先分別定義了兩個function,分別是Class1和Class2,它們的主要區別是Class2比Class1多了一個showName()方法。接著定義了與Class1、Class2對應的對象c1和c2,這時候我們清醒的知道,c1有showName()方法而c2沒有。但是奇跡出現了,當我們執行 c1.shoName.call(c2) 時,會彈出c2的name值,即"class2"。其實,我們執行的任然是c1的方法,只不過臨時起意地把對象c2偷換成對象c1,執行完畢后,它們任然是定義時的樣子,c2并沒有因此多了些什么方法。為了檢測c2有沒有多了方法,示例加了行 c2.showNmae(); 它是不能被執行的,瀏覽器會報出 Object #<Class2> has no method 'showName' 的錯誤。

為什么要這么做?前面說了,這是一種臨時起意的使用方法,我們就是利用其高效的編程而已。但這并不是沒有限制的,假設用c1和c2表示被替換的對象和替換對象,用fun1表示c1固有的方法。1、當fun1不需要參數,且不用到父函數中的任意局部變量時,其實c1.fun1.call(c2) 和 c1.fun1() 沒什么區別;2、當fun1不需要參數但是用到父函數中的變量,那么就要求生成c1和c2的function有相同名稱的那些個被fun1使用的變量;3、當fun1需要參數時,形式要改寫成c1.fun1.call(c2, 參數1, 參數2, ...參數n),這個時候生成c1的function中的變量名就不必和生成c2的function的變量名同名了,只需對應即可。其實,我們在用到call的這種用法時,c2和c1往往在結構和功能上已經有很大的相似性了,所以上述三點很容易避免。

用法二:

在function的定義過程中使用,表現形式:另一個已存在函數.call(this),它可以將另一個已存在函數的變量、方法統統克隆到自己的函數中,實現一種類似于繼承的功能。看個例子:

復制代碼 代碼如下:

function Animal(name){
    this.name = name;
    this.showName = function(){
        alert(this.name);
    }
};

var animal = new Animal("small_animal");
animal.showName();    //alert("small_animal")

function Cat(name){
    Animal.call(this, name);
};

//var Animal = null;    //取消注釋試一試

var cat = new Cat("black_cat");
cat.showName();     //alert("black_cat")

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品一品二区三区四区18 | 91av99| 成人 精品| 精品999久久久 | 日韩视频一区二区三区在线观看 | www日韩在线观看 | 毛片一级片 | 国产精品一品二区三区四区18 | 亚洲综合精品 | javhdfreejaⅴhd| 在线中文字幕不卡 | 国产一区网址 | 亚洲成在人| 成人免费精品视频 | 久久久免费 | 91久久国产综合精品女同国语 | 国产成年人视频网站 | 免费午夜视频在线观看 | 91懂色 | 91精品国产91 | 色婷婷久久久亚洲一区二区三区 | 欧美巨根 | 巨根插入 | 精品久久久久久久久久久久久久久久久久久 | 久久综合av | 国产精品一区视频 | 国内精品伊人久久 | 免费黄色成人 | 国产91成人 | 成人做爰高潮片免费视频韩国 | 视频一区 中文字幕 | 久久生活片 | 91精品国产777在线观看 | 成人aaaaa片毛片按摩 | h视频免费在线观看 | 免费观看又色又爽又黄的崩锅 | 毛片免费视频播放 | 精品一区二区三区免费毛片爱 | 深夜福利视频免费观看 | xxxx18韩国护士hd老师 | 视频一区 中文字幕 |