亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS中call()和apply()的功能及用法實例分析

2019-11-19 11:15:21
字體:
來源:轉載
供稿:網友

本文實例講述了JS中call()和apply()的功能及用法。分享給大家供大家參考,具體如下:

1.call()和apply()的作用

首先引出問題:用call()和apply()的目的是什么?

來看個例子,在javascript OOP中,我們經常會這樣定義:

function cat(){}cat.prototype={  food:"fish",  say: function(){    alert("I love "+this.food);  }}var blackCat = new cat;blackCat.say();

但是如果我們有一個對象whiteDog = {food:"bone"},我們不想對它重新定義say方法,那么我們可以通過call或apply用blackCat的say方法:blackCat.say.call(whiteDog);

所以,可以看出call和apply是為了動態改變this而出現的,當一個object沒有某個方法,但是其他的有,我們可以借助call或apply用其它對象的方法來操作。

在實際中用的比較多的是,通過document.getElementsByTagName選擇的dom 節點是一種類似array的對象。它不能應用Array下的push,pop等方法。我們可以通過:

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

這樣domNodes就可以應用Array下的所有方法了。

2.call()和apply()的區別

首先apply的定義如下: