首页 > 代码库 > 简单理解Javascript中的call 和 apply

简单理解Javascript中的call 和 apply

javascript中面向对像的能力是后来加进来的, 为了兼容性, 所以整出了很多奇特的东西, 

function Animal(){        this.name = "Animal";        this.showName = function(){            alert(this.name);        }    }      function Cat(){        this.name = "Cat";    }       var animal = new Animal();    var cat = new Cat();        //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。    //输入结果为"Cat"    animal.showName.call(cat,",");    //animal.showName.apply(cat,[]);  

所以,可以看出call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。


用的比较多的,通过document.getElementsByTagName选择的dom 节点是一种类似array的array。它不能应用Array下的push,pop等方法。我们可以通过:
var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
这样domNodes就可以应用Array下的所有方法了。


简单理解Javascript中的call 和 apply