理解和熟練運用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。它不能應用Array下的push,pop等方法。咱們能夠經過: var domNodes =  Array.prototype.slice.call(document.getElementsByTagName("*")); 這樣domNodes就能夠應用Array下的全部方法了。
相關文章
相關標籤/搜索