日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

通过实例理解javascript 的call()与apply()

發布時間:2025/4/16 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过实例理解javascript 的call()与apply() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先前使用javascript多是為了表單驗證,最多是實現客戶端的交互功能。基本不用call、apply之類的難懂方法。
現在流行富客戶端了。javascript也越來越對象化了。不得不學習一下!

一、方法的定義
call方法:

語法:call([thisObj[,arg1[, arg2[,?? [,.argN]]]]])
定義:調用一個對象的一個方法,以另一個對象替換當前對象。
說明:
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。
如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj。

apply方法:
語法:apply([thisObj[,argArray]])
定義:應用某一對象的一個方法,用另一個對象替換當前對象。
說明:
如果 argArray 不是一個有效的數組或者不是 arguments 對象,那么將導致一個 TypeError。

如果沒有提供 argArray 和 thisObj 任何一個參數,那么 Global 對象將被用作 thisObj, 并且無法被傳遞任何參數。

二、例子程序:

  • <html>??
  • <head>??
  • <script?language="javascript">??
  • /**定義一個animal類*/??
  • function?Animal(){??
  • ????this.name?=?"Animal";??
  • ????this.showName?=?function(){??
  • ????????alert(this.name);??
  • ????}??
  • }??
  • /**定義一個Cat類*/??
  • function?Cat(){??
  • ????this.name?=?"Cat";??
  • }??
  • ??
  • /**創建兩個類對象*/??
  • var?animal?=?new?Animal();??
  • var?cat?=?new?Cat();??
  • ??
  • //通過call或apply方法,將原本屬于Animal對象的showName()方法交給當前對象cat來使用了。??
  • //輸入結果為"Cat"??
  • animal.showName.call(cat,",");??
  • //animal.showName.apply(cat,[]);??
  • ???
  • ??
  • </script>??
  • </head>??
  • <body></body>??
  • </html>??


  • 以上代碼無論是采用animal.showName.call或是animal.showName.apply方法,運行的結果都是輸出一個"Cat"的字符串。說明showName方法的調用者被換成了cat對象,而不是最初定義它的animal了。這就是call和apply方法的妙用!

    三、小結:
    call和apply方法通常被用來實現類似繼承一樣的功能,以達到代碼復用的功效。它們的區別主要體現在參數上。

    總結

    以上是生活随笔為你收集整理的通过实例理解javascript 的call()与apply()的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。