JS中this的四种调用方法

一.函数调用

// this 指代全局对象(window)
function test(){
   this.x = 1;
   alert(this.x);
}
test(); // 1

二.方法调用

// 作为对象方法调用,this 指代上级对象
function test(){
  alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m(); // 1

三.构造函数模式

// this指向new创建的新对象
function test(){
  this.x = 1;
}
var o = new test();
alert(o.x); // 1
// 运行结果为1。为了说明这时this不是全局对象,看下面的代码:
var x = 2;
function test(){
  this.x = 1;
}
var o = new test();
alert(x); //2

四.apply/call调用(函数上下文)

上下文模式中this的指向和前三种模式不一样,它的this指向可以改变,而前三种模式是固定。
apply和call第一个参数:表示使用那个对象来调用函数;
apply第二个参数:是一个数组或伪数组,数组的值做为函数的参数被传入;
call第二个参数是:是基本数据类型(number string boolean);

var x = 0;
function test(){
 	alert(this.x);
}
var o={};
o.x = 1;
o.m = test;
o.m.apply(); //0  指向window
//apply()的参数为空时,默认调用全局对象。如果把最后一行代码修改为:
o.m.apply(o); //1  指向o对象

通过call和apply可以重新定义函数的执行环境,即this的指向,这对于一些应用当中是十分常用的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值