js中call和apply的用法

使用这两个方法可以像调用其他对象方法一样调用函数。
<html>
<head>
 <title>Example-6.10 用call和apply调用函数</title>
</head>
<body>
<script>
<!--
 function dwn(s)
 {
  document.write(s + "<br/>");
 }
 //定义一个Point类型
 function Point(x,y)
 {
  this.a = x;
  this.b = y;
  this.toString = function(){
   return "(" + [x,y] + ")";
  }
 }
 //定义一个Vector类型
 function Vector(x,y)
 {
  this.a = x;
  this.b = y;
  this.toString = function(){
   return "[" + [x,y] + "]";
  }
 }
 //这个函数将传入的参数累加到对象的x、y属性上
 function add(x, y){
  return new this.constructor(this.a + x, this.b + y);
 }
 var p = new Point(1, 2);      //经过这个new之后,有了p.a和p.b的值了,而且重写了p.toString的方法。
 var v = new Vector(-1, 2);    //经过这个new之后,有了v.a和v.b的值了,而且重写了v.toString的方法。
 var p1 = add.call(p, 3, 4);   //把add函数作为p的方法调用,这个方法执行了add方法,而参数p对象作为了add函数的所有者。
 var v1 = add.apply(v, [3,4]); //把add函数作为v的方法调用
 dwn(p1);
 dwn(v1);
-->
</script>
</body>
</html>

使用call和apply可以无需定义,直接调用一个函数。

 

运行结果:

(4,6)
[2,6]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值