javascript中this关键字的使用

javascript的this总是指向一个对象,具体指向哪个对象是基于函数的执行环境动态确定,并非指函数被申明时的环境,this的指向大致分为:

1.作为对象的方法调用

当函数作为对象的方法被调用时,this指向该对象:

var obj = {
    a:1,
    getA:function(){
	alert(this === obj);
	alert(this.a);
    }
}
obj.getA(); //输出结果:true 1
 
 

2.作为普通函数调用

当函数不作为对象的属性被调用时,此时的this指向全局对象。

<1>浏览器的javascript中,全局对象是window对象。

<2>函数体的宿主对象为window对象。

window.name = 'globalName';
var myObject = {
	name : 'huahua',
	getName : function(){
		return this.name;
	}
}
var getName = this.name;  
console.log(getName());
输出:globalName

var getName = myObject.getName();
console.log(getName);
输出:huahua

3.构造器调用

<1>当用new运算符调用函数时,该函数总会返回一个对象,通常情况下,构造器里的this指向返回的这个对象。

var myClass = function(){
	this.name = 'seven';
}
var obj = new myClass();
alert(obj.name); //输出seven

<2>构造器显示返回object类型的对象是则结果改变如:

var myClass = function(){
    this.name = 'seven';
    return {
	name:'anne'
    }
}
var obj = new myClass();
alert(obj.name); //输出anne

<3>构造器返回值非对象类型

var myClass = function(){
    this.name = 'seven';
    return 'anne'; 
}
var obj = new myClass();
alert(obj.name); //输出seven

4.Function.prototype.call或Function.prototype.apply调用

跟普通的函数调用相比,用Function.prototype.call或Function.prototype.apply可以动态更改chuan如函数的this:

ar obj = {
	name : 'LiLI',
	getName : function(){
		return  this.name;
	}
}
var newObj = {
	name : 'nana'
}
console.log(obj.name);  //输出LiLI
console.log(obj.getName.call(newObj));  //输出nana
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值