最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript中call的兩種用法實例

 更新時間:2013年12月13日 15:20:45   作者:  
這篇文章主要介紹了Javascript中call的兩種用法實例,有需要的朋友可以參考一下

用法一(常見用法):

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

復(fù)制代碼 代碼如下:

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();        //不能執(zhí)行

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

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

用法二:

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

復(fù)制代碼 代碼如下:

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")

相關(guān)文章

  • 詳解javascript實現(xiàn)瀑布流列式布局

    詳解javascript實現(xiàn)瀑布流列式布局

    這篇文章主要介紹了javascript實現(xiàn)瀑布流的兩種布局方式,一是絕對式布局、二是列式布局,詳細介紹了這兩種布局方式的原理,本文重點介紹列式布局,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript動畫實例之粒子文本的實現(xiàn)方法詳解

    JavaScript動畫實例之粒子文本的實現(xiàn)方法詳解

    這篇文章主要介紹了JavaScript動畫實例之粒子文本的實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 跟我學(xué)習(xí)javascript的for循環(huán)和for...in循環(huán)

    跟我學(xué)習(xí)javascript的for循環(huán)和for...in循環(huán)

    跟我學(xué)習(xí)javascript的for循環(huán)和for...in循環(huán),它們是JavaScript中提供了兩種方式迭代對象,本文就和大家一起學(xué)習(xí)for循環(huán)和for...in循環(huán),感興趣的小伙伴們可以參考一下
    2015-11-11
  • js性能優(yōu)化技巧

    js性能優(yōu)化技巧

    性能優(yōu)化:簡而言之,就是在不影響系統(tǒng)運行正確性的前提下,使之運行地更快,完成特定功能所需的時間更短,本篇文章給大家介紹js性能優(yōu)化技巧,需要的朋友參考下
    2015-11-11
  • 可以自動輪換的頁簽 tabs with auto play fucntion

    可以自動輪換的頁簽 tabs with auto play fucntion

    HTML、CSS方面改寫了一下結(jié)構(gòu),用了一個DL javascript方面可以選擇不斷自動循環(huán),或者只循環(huán)一次的,點擊以后繼續(xù)循環(huán),或者停止循環(huán)
    2008-02-02
  • uniapp調(diào)整webview的大小與位置解決遮擋問題的辦法

    uniapp調(diào)整webview的大小與位置解決遮擋問題的辦法

    這篇文章主要介紹了如何在uniapp中使用webview時控制其大小和位置,以避免擋住頂部內(nèi)容,并提供了一個示例代碼,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • 如何根據(jù)url?批量下載二維碼實現(xiàn)詳解

    如何根據(jù)url?批量下載二維碼實現(xiàn)詳解

    這篇文章主要為大家介紹了如何根據(jù)url批量下載二維碼實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Asp.Net alert彈出提示信息的幾種方法總結(jié)

    Asp.Net alert彈出提示信息的幾種方法總結(jié)

    本篇文章主要是對Asp.Net alert彈出提示信息的幾種方法進行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • Javascript 實現(xiàn) Excel 導(dǎo)入生成圖表功能

    Javascript 實現(xiàn) Excel 導(dǎo)入生成圖表功能

    這篇文章主要介紹了Javascript 實現(xiàn) Excel 導(dǎo)入生成圖表功能,本文通過實例代碼講解給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • JS彈出層單純的絕對定位居中示例代碼

    JS彈出層單純的絕對定位居中示例代碼

    這篇文章主要介紹了JS彈出層的絕對定位居中是如何實現(xiàn)的,需要的朋友可以參考下
    2014-02-02

最新評論

义乌市| 樟树市| 亳州市| 邻水| 濉溪县| 通江县| 乌拉特后旗| 肇州县| 平山县| 略阳县| 托里县| 高陵县| 六枝特区| 盐池县| 元江| 含山县| 太仓市| 临沧市| 广昌县| 阿巴嘎旗| 乐山市| 陆良县| 陇西县| 阳江市| 呼伦贝尔市| 象山县| 灌云县| 珠海市| 温宿县| 如皋市| 资源县| 赤城县| 宁化县| 湖州市| 宁安市| 杭锦后旗| 枣阳市| 宣恩县| 二手房| 永济市| 屯门区|