中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js中apply與call簡單用法詳解

發布時間:2020-08-21 15:55:27 來源:腳本之家 閱讀:154 作者:曾田生z 欄目:web開發

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

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 A

var 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) ); //3

var b = new B() ;
console.log( a.sun.call(b,2,2) ); // 4

console.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下的所有方法了。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵武市| 佛教| 江阴市| 安溪县| 小金县| 正定县| 万安县| 广州市| 凌云县| 名山县| 宜州市| 白水县| 大邑县| 镇康县| 江山市| 邢台市| 若尔盖县| 上蔡县| 菏泽市| 嘉定区| 铜山县| 那曲县| 罗源县| 凤翔县| 哈尔滨市| 土默特右旗| 安吉县| 雷波县| 长子县| 龙川县| 武城县| 巍山| 金坛市| 壶关县| 鹤庆县| 博爱县| 和平县| 旺苍县| 新绛县| 东乡族自治县| 高台县|