js随笔-函数方法中的this

本文详细解析了JavaScript中this关键字的不同行为:对象方法调用、内嵌函数、外部函数调用及方法赋值等情况下的指向问题,并提供了解决方案。

1.对象的方法形式调用,fun.getAge()的this指向的是对象fun

var fun={
  name:"lihui",
  age:23,
  getAge:function(){
    console.log(fun.age);
}
}
fun.getAge();//23

  

2.当在对象方法中内嵌函数,内嵌函数中的this便指向的是全局对象window,不是对象了

var fun={
  name:"lihui",
  age:23,
  getAge:function(){
    function getAgeFun(){
  console.log(this.age);  
}
  return getAgeFun();
}
}
fun.getAge();//underfined

要想在函数中把this指向对象需要在方法中将this赋值给一个变量,在函数中使用这个变量

var fun={
  name:"xiaoming",
  age:23,
  getAge:function(){
    var that=this;
    function getAgeFun(){
  console.log(that.age);  
}
  return getAgeFun();
}
}
fun.getAge();//23  

之前经常在回调函数中犯这种错误,就经常在success中创建函数,并在函数中直接this.xxx使用对象的参数,就会出错

 

3.在对象方法中调用在外部创建的函数,函数中的this指向的也是window

function getAgeFun(){
  console.log(this.age);  
}
var fun={
  name:"xiaoming",
  age:23,
  getAge:function(){
    getAgeFun();
}
}
fun.getAge();//underfined

4.在将对象方法赋值给其他变量,this值也是指向window

var fun={
  name:"xiaoming",
  age:23,
  getAge:function(){
    console.log(this.age);  
}
}
var fun2=fun.getAge;
fun2();//underfined

  

转载于:https://www.cnblogs.com/Anne3/p/7110547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值