最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

js中apply與call簡單用法詳解

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:26:13
文檔

js中apply與call簡單用法詳解

js中apply與call簡單用法詳解:你可以直接看例子,也可以先讀一下介紹: call和apply是為了動態(tài)改變this而出現(xiàn)的,當(dāng)一個object沒有某個方法,但是其他的有,我們可以借助call或apply用其它對象的方法來操作。 call, apply都屬于Function.prototype的一個方法,它是JavaSc
推薦度:
導(dǎo)讀js中apply與call簡單用法詳解:你可以直接看例子,也可以先讀一下介紹: call和apply是為了動態(tài)改變this而出現(xiàn)的,當(dāng)一個object沒有某個方法,但是其他的有,我們可以借助call或apply用其它對象的方法來操作。 call, apply都屬于Function.prototype的一個方法,它是JavaSc

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

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ù)') ?。?/p>

可以 再理解一下這句話 -- 我們可以借助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下的所有方法了。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js中apply與call簡單用法詳解

js中apply與call簡單用法詳解:你可以直接看例子,也可以先讀一下介紹: call和apply是為了動態(tài)改變this而出現(xiàn)的,當(dāng)一個object沒有某個方法,但是其他的有,我們可以借助call或apply用其它對象的方法來操作。 call, apply都屬于Function.prototype的一個方法,它是JavaSc
推薦度:
標(biāo)簽: 用法 call js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top