JS self=this

1.每个函数都会有自己的this和arguments;this对象绑定运行环境,arguments绑定调用参数。

2.全局函数:this和全局环境绑定,浏览器指向全局window对象(node.js中指向全局global对象)。

3.类成员函数:this和实例对象绑定,指向类实例对象。

4.类成员函数中的局部函数:this和全局环境绑定,指向全局window对象(node.js中指向全局global对象)。也就是在这种情况下,如果需要使用到类实例对象的引用,就需要将类实例对象的引用this记录下来,提供给该局部函数使用。(个人理解为闭包的作用。)

 

下面例子在node.js上运行,在浏览器上运行请将global替换为window。

5.全局函数的例子:

var g_func = function(){
    console.log(this == global);
}

g_func();

输出 

true

 

6.类成员函数例子

var g_object = function(){    
    this.func = function(){
        console.log("func this == global : ",this == global);
    }
    
    this.no_self_func = function(){        
        var inner_func = function(){
            console.log("no_self_func this == global : ",this == global);
        }
        
        inner_func();
    }
    
    this.self_func = function(){
        var self = this;
        var inner_func = function(){
            console.log("self_func this == global : ",this == global);
            console.log("self_func self == global : ",self == global);
        }
        
        inner_func();
    }
}

var obj = new g_object();
obj.func();
obj.no_self_func();
obj.self_func();

输出

func this == global :  false

no_self_func this == global :  true

self_func this == global : true
self_func self == global : false

 

PS:这种特性和lua很像。

以上。

 

转载于:https://www.cnblogs.com/chevin/p/8043721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值