简单理解Javascript中的call 和 apply

Posted 先定一个可以实现的小目标

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单理解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的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的call()和apply()的理解

理解和运用javascript中的call及apply

理解JavaScript的call和apply使用情景的最简单直观的例子

理解 JavaScript call()/apply()/bind()

javascript 中的apply call 的理解

理解JavaScript Call()函数原理。