js之this


this所指向的对象是由this所在的执行域决定的,而不是由this所在的定义域决定

对象的方法调用,this指向当前对象:obj.fn()、ojb['fn']()。 //.fn()、['fn']前的对象

var name = "this=window";
var o = {
    name: "this=o",
    f: function(){
        return this;
    }
};
var o1 ={
    name: "this=o1",
    f: o.f
}
var a = o1.f();
console.log(a.name);//this=o1
var o2 = {
    name:"this=o2",
    f:function(){
        return o.f;
    }
};
var b=o2.f()();
console.log(b.name);//window

a1.f(),a1的方法,所以this指向a1

o2.f()(),分开看,o2.f()返回的是o.f,o.f这里并没有执行,是一个函数。o2.f()(),函数自执行,this指向window


function f(){
    return this;
};
var p = {
    name:"对象p",
    me:f,
    p1:{
        name:"对象p1",
        me:f,
        p2:{
            name:'对象p2',
            me:f
        }
    }
};
var who = p.p1.p2.me();
console.log(who.name);//对象p2
who = p.p1.me();
console.log(who.name);//对象p1
who = p.me();
console.log(who.name);//对象p
这里的都是调用方法,方法由谁调用,this指向谁()

第一个me()调用前是p2,第二个是p1,第三个是p,分别对应p2,p1,p。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值