学科分类
目录
JavaScript网页编程

更改this指向

除了遵循默认的this指向规则,函数的调用者还可以利用JavaScript提供的两种方式手动控制this的指向。一种是通过的apply()方法,另一种是通过call()方法。具体示例如下。

 1  function method() {

 2   console.log(this.name);

 3  }

 4  method.apply({ name: '张三' });  // 输出结果:张三

 5  method.call({ name: '李四' });    // 输出结果:李四

通过上述示例可以看出,apply()和call()方法都可以更改函数内的this指向,它们的第1个参数用来传入一个对象,然后在method()方法中通过this访问到的就是这个对象。因此,method()函数中通过this.name即可访问到传入对象的name属性。

apply()和call()方法的区别在于第2个参数。apply()的第2个参数表示调用函数时传入的参数,通过数组的形式传递;而call()则使用第2~N个参数来表示调用函数时传入的函数。下面我们通过代码进行演示。

 1  function method(a, b) {

 2   console.log(a + b);

 3  }

 4  method.apply({}, ['1', '2']);  // 数组方式传参,输出结果:12

 5  method.call({}, '3', '4');   // 参数方式传参,输出结果:34
点击此处
隐藏目录