js 的 call 与 apply

call方法: 
语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
说明: 
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 

js的call 类似于java的继承

如:function a(b,c){alert(c+b)}

    function d(){alert(0)}

   a.call(d,22,33)

对象:function Person(){this.sex ="xxxx";this.show = function(){alert(this.sex)}}

        function Man(){this.sex = "yyyyy";}

       var person = new Person();

       var man = new Man();

       person .show.call(man) ----------yyyyy

 call 的意思是把 Person的方法放到Man上执行,原来Man是没有show() 方法,现在是把Person的show()方法放到 man 上来执行,所以this.sex 应该是 yyyyy

apply 也类似于,只是入参有点不一样如之前的:要用中括号 给[]括起来。

如:function a(b,c){alert(c+b)}

     function d(){alert(0)}

   a.apply(d,[22,33])

原文地址:https://www.cnblogs.com/qianduanxiaocaij/p/5367795.html