js中的this

一般而言,在Javascript中,this指向函数执行时的当前对象

var obj={name:”Sun”}
console.log(obj.name) //–>Sun

this关键字在Javascript中和执行环境,而非声明环境有关

var name=”gname”
var nameTemp={
showName:function(){alert(this.name)} //声明公用模板对象,功能是输出名称,可供其他对象引用,此处理解为 谁引用了函数showName,this就指向谁;
}
var obj={name:”Tom”,
showName:nameTemp.showName} // 此处obj属性showName引用模板函数showName;则模板函数数据将会被覆盖,可使用构造函数方式解决这个问题;
obj.showName(); //–>Tom,执行环境对象为obj,所要this指向obj

环 境this指向说明
没有明确当前对象时全局对象window默认当作是window方法运行
局部变量引用的函数全局对象window无法解释
setTimeoutsetInterval全局对象window他们是window方法,自然指向window
运行匿名函数时全局对象window

【全局对象】
浏览器状况下的是 window,
其他情况下如node.js的全局对象就叫全局对象the global object

例如

var name=”win”;

var obj1={
name:”Bob”,
showName:function(){alert(this.name)}
};

var obj2={
name:”Tom”,
showName:function(){
var fun=obj1.showName;//将obj1的方法showName的指针复制给fun,此时得到一个fun()方法
fun();
}}

var show=obj1.showName;
show(); //–>win,可以当作是window调用方法show(),所以this指向的是window对象
obj2.showName(); //–>win, this原本应该指向对象obj2,但是局部变量showName 再引用 此变量内的局部函数fun(),this却任然指向window对象

: 总结:**直接调用方法**,this指向window对象
局部变量引用的函数,this指向window对象

正确的设计方式:内部函数的 this 应该绑定到其外层函数对应的对象上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值