欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中apply與call簡(jiǎn)單用法詳解

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

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

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

call, apply都屬于Function.prototype的一個(gè)方法,它是JavaScript引擎內(nèi)在實(shí)現(xiàn)的,因?yàn)閷儆贔unction.prototype,所以每個(gè)Function對(duì)象實(shí)例,也就是每個(gè)方法都有call, apply屬性.既然作為方法的屬性,那它們的使用就當(dāng)然是針對(duì)方法的了.這兩個(gè)方法是容易混淆的,因?yàn)樗鼈兊淖饔靡粯?只是使用方式不同.
從上面可以得出 call, apply 是給方法使用的,為了改變調(diào)用該方法的 this指針

簡(jiǎn)單例子:

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ù)中沒(méi)有 任何方法 , A 函數(shù)有個(gè) getName() 方法 ,a.getName() 自然成立 ,但 B 也要使用 getName() 的方法怎么辦呢 ? 那就用 call(this,'參數(shù)') !!

可以 再理解一下這句話 -- 我們可以借助call或apply調(diào)用其它對(duì)象的方法來(lái)操作,call和apply是為了動(dòng)態(tài)改變this而出現(xiàn)的 ,本來(lái) a.getName() 的 this 指向 a, call 動(dòng)態(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一般使用情況

用的比較多的,通過(guò)document.getElementsByTagName選擇的dom 節(jié)點(diǎn)是一種類似array的array。它不能應(yīng)用Array下的push,pop等方法。我們可以通過(guò):

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

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

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

相關(guān)文章

  • JavaScript實(shí)現(xiàn)繪制兩個(gè)坐標(biāo)之間的連線

    JavaScript實(shí)現(xiàn)繪制兩個(gè)坐標(biāo)之間的連線

    本文主要介紹了JavaScript實(shí)現(xiàn)繪制兩個(gè)坐標(biāo)之間的連線功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • js 多瀏覽器分別判斷代碼

    js 多瀏覽器分別判斷代碼

    比較實(shí)用的多款瀏覽器判斷代碼,需要的朋友可以收集下,適合需要區(qū)別對(duì)待不同瀏覽器,執(zhí)行不用的操作的代碼。
    2010-04-04
  • uniapp實(shí)現(xiàn)微信一鍵登錄按鈕樣式(膠囊按鈕的樣式)

    uniapp實(shí)現(xiàn)微信一鍵登錄按鈕樣式(膠囊按鈕的樣式)

    這篇文章主要介紹了uniapp實(shí)現(xiàn)微信一鍵登錄按鈕樣式,如何開(kāi)發(fā)膠囊按鈕的樣式,需要的朋友可以參考下
    2024-07-07
  • 微信小程序?qū)崿F(xiàn)animation動(dòng)畫(huà)

    微信小程序?qū)崿F(xiàn)animation動(dòng)畫(huà)

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)animation動(dòng)畫(huà)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Bootstrap 實(shí)現(xiàn)表格樣式、表單布局的實(shí)例代碼

    Bootstrap 實(shí)現(xiàn)表格樣式、表單布局的實(shí)例代碼

    這篇文章主要介紹了Bootstrap 實(shí)現(xiàn)表格樣式、表單布局的實(shí)例代碼,需要的朋友可以參考下
    2018-12-12
  • Javascript閉包的作用與使用方法淺析

    Javascript閉包的作用與使用方法淺析

    閉包是js的一個(gè)難點(diǎn)也是它的一個(gè)特色,是我們必須掌握的js高級(jí)特性,下面這篇文章主要給大家介紹了關(guān)于JavaScript閉包函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • JavaScript原生數(shù)組Array常用方法

    JavaScript原生數(shù)組Array常用方法

    在入門Vue時(shí), 列表渲染一節(jié)中提到數(shù)組的變異方法, 其中包括push(), pop(), shift(), unshift(), splice(), sort(), reverse(), 而concat()和slice()不屬于變異方法. 在這里就復(fù)習(xí)一下Array所提供的這幾個(gè)方法的使用
    2017-04-04
  • 基于Electron實(shí)現(xiàn)桌面應(yīng)用開(kāi)發(fā)代碼實(shí)例

    基于Electron實(shí)現(xiàn)桌面應(yīng)用開(kāi)發(fā)代碼實(shí)例

    這篇文章主要介紹了基于Electron實(shí)現(xiàn)桌面應(yīng)用開(kāi)發(fā)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于JS中的作用域中的問(wèn)題思考分享

    關(guān)于JS中的作用域中的問(wèn)題思考分享

    這篇文章主要介紹了關(guān)于JS中的作用域中的問(wèn)題思考分享,scope和?closure是?javascript中兩個(gè)非常關(guān)鍵的概念,前者JS用多了還比較好理解而且容易體會(huì)到,而?closure就不一樣了。這玩意是真的很容易迷糊,需要的朋友可以參考下
    2022-04-04
  • JS正則表達(dá)式驗(yàn)證密碼強(qiáng)度

    JS正則表達(dá)式驗(yàn)證密碼強(qiáng)度

    這篇文章主要為大家詳細(xì)介紹了JS正則表達(dá)式驗(yàn)證密碼強(qiáng)度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論