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

js中apply與call簡單用法詳解

 更新時間:2017年11月06日 10:47:12   作者:曾田生z  
這篇文章主要為大家詳細(xì)介紹了js中apply與call簡單用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

call, apply都屬于Function.prototype的一個方法,它是JavaScript引擎內(nèi)在實現(xiàn)的,因為屬于Function.prototype,所以每個Function對象實例,也就是每個方法都有call, apply屬性.既然作為方法的屬性,那它們的使用就當(dāng)然是針對方法的了.這兩個方法是容易混淆的,因為它們的作用一樣,只是使用方式不同.
從上面可以得出 call, apply 是給方法使用的,為了改變調(diào)用該方法的 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 函數(shù)中沒有 任何方法 , A 函數(shù)有個 getName() 方法 ,a.getName() 自然成立 ,但 B 也要使用 getName() 的方法怎么辦呢 ? 那就用 call(this,'參數(shù)') !!

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

apply

apply 與 call 只是參數(shù)的使用不同而已

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 節(jié)點是一種類似array的array。它不能應(yīng)用Array下的push,pop等方法。我們可以通過:

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

這樣domNodes就可以應(yīng)用Array下的所有方法了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

绍兴市| 潞西市| 鄱阳县| 临颍县| 香港| 曲阜市| 新昌县| 吉安县| 周宁县| 芒康县| 阳江市| 应用必备| 枣强县| 赤城县| 垦利县| 泾川县| 吉林市| 竹北市| 临澧县| 宁波市| 准格尔旗| 高青县| 平舆县| 合川市| 胶南市| 新源县| 潼南县| 馆陶县| 扶风县| 赤峰市| 泰安市| 定南县| 湟源县| 胶州市| 新乡市| 额尔古纳市| 大悟县| 洛阳市| 全南县| 本溪| 南安市|