當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
通过实例理解javascript 的call()与apply()
生活随笔
收集整理的這篇文章主要介紹了
通过实例理解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。
<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方法:
語法:call([thisObj[,arg1[, arg2[,?? [,.argN]]]]])
定義:調用一個對象的一個方法,以另一個對象替換當前對象。
說明:
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。
如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj。
apply方法:
語法:apply([thisObj[,argArray]])
定義:應用某一對象的一個方法,用另一個對象替換當前對象。
說明:
如果 argArray 不是一個有效的數組或者不是 arguments 對象,那么將導致一個 TypeError。
如果沒有提供 argArray 和 thisObj 任何一個參數,那么 Global 對象將被用作 thisObj, 并且無法被傳遞任何參數。
二、例子程序:
以上代碼無論是采用animal.showName.call或是animal.showName.apply方法,運行的結果都是輸出一個"Cat"的字符串。說明showName方法的調用者被換成了cat對象,而不是最初定義它的animal了。這就是call和apply方法的妙用!
三、小結:
call和apply方法通常被用來實現類似繼承一樣的功能,以達到代碼復用的功效。它們的區別主要體現在參數上。
總結
以上是生活随笔為你收集整理的通过实例理解javascript 的call()与apply()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义取值距离的javascript r
- 下一篇: JAR软件转APK,在线转换器