国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

js中apply與call簡單用法詳解

2024-05-06 16:40:44
字體:
來源:轉載
供稿:網友

你可以直接看例子,也可以先讀一下介紹:

call和apply是為了動態改變this而出現的,當一個object沒有某個方法,但是其他的有,我們可以借助call或apply用其它對象的方法來操作。

call, apply都屬于Function.prototype的一個方法,它是JavaScript引擎內在實現的,因為屬于Function.prototype,所以每個Function對象實例,也就是每個方法都有call, apply屬性.既然作為方法的屬性,那它們的使用就當然是針對方法的了.這兩個方法是容易混淆的,因為它們的作用一樣,只是使用方式不同.
從上面可以得出 call, apply 是給方法使用的,為了改變調用該方法的 this指針

簡單例子:

call

function A() {  this.getName = function (xx) {    return xx;  }}function B() {}var a = new A();console.log( a.getName('i am A') ); //i am Avar b = new B() ;console.log( a.getName.call(b,'i am B') ); // i am B

B 函數中沒有 任何方法 , A 函數有個 getName() 方法 ,a.getName() 自然成立 ,但 B 也要使用 getName() 的方法怎么辦呢 ? 那就用 call(this,'參數') !!

可以 再理解一下這句話 -- 我們可以借助call或apply調用其它對象的方法來操作,call和apply是為了動態改變this而出現的 ,本來 a.getName() 的 this 指向 a, call 動態的 把 this 指向了 b ,變成了 b.getName()

apply

apply 與 call 只是參數的使用不同而已

function A() {  this.sun = function (a ,b) {    return a+b;  }}function B() {}var a = new A();console.log( a.sun(1,2) ); //3var b = new B() ;console.log( a.sun.call(b,2,2) ); // 4console.log( a.sun.apply(b,[3, 3]) ); //6

call和apply一般使用情況

用的比較多的,通過document.getElementsByTagName選擇的dom 節點是一種類似array的array。它不能應用Array下的push,pop等方法。我們可以通過:

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));

這樣domNodes就可以應用Array下的所有方法了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定安县| 洪湖市| 鲁甸县| 安吉县| 泽库县| 阿拉善盟| 环江| 隆子县| 马尔康县| 冷水江市| 扎赉特旗| 宣城市| 宜州市| 孝义市| 禹城市| 获嘉县| 邵阳县| 东兰县| 泰顺县| 富阳市| 高淳县| 黄龙县| 宁远县| 噶尔县| 美姑县| 安陆市| 游戏| 乐亭县| 容城县| 垣曲县| 安庆市| 那曲县| 长治县| 黄骅市| 宜君县| 上饶市| 嘉义市| 萍乡市| 荣成市| 炎陵县| 达孜县|