this关键字

关于this关键字 
作为小白的我只能说一句话:
谁调用函数,this就代指对应的对象
来!说再多不如咱们来看几个小例子:
 
    var name = "John";
       var Bob = {
        name: "Bob",
        showName: function() {
            console.log(this);
            alert(this.name);
        }
    };
    var Tom = {
        name: "Tom",
        showName: function() {
            var fun = Bob.showName;
            /*
            var fun = function() {
                alert(this.name)
            }
            */

            // 最终调用的fun,所以this指向的就是最终谁调用了fun
            // fun此时不属于任何对象调用,this默认指向了window
            fun();
        }
    };

    Tom.showName(); // John

    var name = "Bob";
    var nameObj = {
        name: "Tom",
        showName: function() {
            alert(this.name);
        },
        waitShowName: function() {
            // 此时的this:nameObj
            var that = this;

            // 最终调用了showName()函数,由that调用,that->this->nameObj
            setTimeout(nameObj.showName(), 1000); // Tom

            /*
            // 匿名函数自调用 this->window
            setTimeout(function() {
                alert(this.name); // Bob
            }, 1000);
            */
        }
    };

    nameObj.waitShowName();
    
    var username = 'lisi';

    function demo() {
        this.username = 'zhangsan';

        this.say = function() {
            return function() {
                alert(this.username);
            }
        }
    }

    var d = new demo();
    /*
        d.say:函数名
        d.say():函数调用之后,返回的还是一个函数  d.say():函数名
                d.say() = function(){
                    alert(this.username)
                }
        d.say()():继续调用函数
     */
    d.say()(); //lisi

    var fun = function() {
        alert(this.username);
    }
    window.fun(); // lisi

不知是否能给你带来帮助,欢迎点评…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值