Javascript 中的 this

本文详细解析了JavaScript中this关键字在不同上下文中的行为表现,包括纯函数调用、作为对象方法调用、作为构造函数调用及通过apply调用的情况,并对比了jQuery中的this使用差异。

欢迎大家访问我自己架的博客站点 码厩技术博客

在博客( http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html)中看到有以下四种情况:
1、纯粹的函数调用。
2、作为对象方法的调用。
3、作为构造函数调用。
4、apply 调用。
 
this 在 javascript 中的一个关键字,用在方法中,表示调用该方法的对象。
这样一来,上面的几种用法都好解释了。
第一种情况:
    var x = 1;
    function test(){
        this.x = 0;
    }
    test();
    alert(x); //0
没有另指调用对象,所有代码执行者都是 window,this 自然就是 window。
this 用于引用全局变量。
第二种情况:
    function test(){
        alert(this.x);
    }
    var o = {};
    o.x = 1;
    o.m = test;
    o.m(); // 1
这不解释,this 就是 o 了嘛。
第三种情况:
    var x = 2;
    function test(){
        this.x = 1;
    }
    var o = new test();
    alert(x); //2
做构造函数的时候,this 是指新对象,不再表示全局。
第四种情况:
    var x = 0;
    function test(){
        alert(this.x);
    }
    var o={};
    o.x = 1;
    o.m = test;
    o.m.apply(); //0
apply 函数调用,如果没有参数,就是说环境没有指定,即函数执行者是全局,window。
如果在apply中加入参数 o,表示执行者为对象 o,结果又不一样。
 
 
jQuery 中的 $(this) != this。
$ 函数返回的都是封装好的 jQuery 对象。
 
 

转载于:https://www.cnblogs.com/catroll/archive/2012/07/11/2586026.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值