js中call和apply的用法

来源:互联网 发布:tensorflow和spark 编辑:程序博客网 时间:2024/05/16 07:36

使用这两个方法可以像调用其他对象方法一样调用函数。
<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]



原创粉丝点击