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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:24:49
字體:
供稿:網(wǎng)友

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

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

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 Avar b = new B() ;console.log( a.getName.call(b,'i am B') ); // i am B

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

可以 再理解一下這句話 -- 我們可以借助call或apply調(diào)用其它對(duì)象的方法來操作,call和apply是為了動(dòng)態(tài)改變this而出現(xiàn)的 ,本來 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) ); //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 節(jié)點(diǎn)是一種類似array的array。它不能應(yīng)用Array下的push,pop等方法。我們可以通過:

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 驻马店市| 邯郸县| 阜康市| 柘城县| 桐乡市| 扎兰屯市| 齐齐哈尔市| 衡南县| 徐水县| 上犹县| 吉首市| 邮箱| 四平市| 兴隆县| 高清| 武山县| 乳源| 嘉鱼县| 阿拉善左旗| 阜南县| 铁岭市| 天峨县| 洞头县| 云梦县| 清涧县| 拉孜县| 应用必备| 六枝特区| 奇台县| 浪卡子县| 天津市| 博湖县| 屏南县| 汝阳县| 固始县| 延长县| 都江堰市| 手游| 重庆市| 五华县| 南安市|