关于call和apply的区别

关于call和apply。

 function a(names){
         this.name=names;         
       }
       a.prototype.show=function(){
          alert(this.name);
       }
       function b(name1){
          this.name=name1;
       }
       b.prototype=new a();
       bb=new b("jack");
       bb.show();
       new a("Mark").show();
       new a().show.call(b("Jack"));
       a.prototype.show.call(b("jack"));//call有两个参数,继承对象a的方法; alert(jack)
       alert(bb instanceof a?true:false);
a.prototype=new a();把对象a的实例直接赋给对象b的原型链上面,然后b的实例可以调用a的方法了。 下面看个人解释:

       var aa=new a("Jack");
       aa.show()//jack   aa=b.prototype;

第二个弹出一个Mark 对象a实例之后得自调用.

第三个弹出Jack 用了call方法继承a的show方法。

第四个也是jack 我们最喜欢用call的习惯方法.

instanceof //解释一下 就是bb是不是对象a的实例 是就返回true 不是就返回false

上面换成apply也会可以的,只不过第二个参数apply是用数组。两个apply常用的例:

var arr=[5,4,6,5,4];
var arr2=[87,45.4,77];
Array.prototype.push.apply(arr,arr2);//返回arr=[5,4,6,5,4,87,45.4,77];
Math.max.push.apply(null,arr2);//返回87;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值