this和闭包

一篇介绍javascript this的好文:http://www.quirksmode.org/js/this.html

以前以为js中this和c++中this差不多,原来却不是,

后来又以为this是指js代码块执行时环境,还是不对

现在这篇文章才终于知道this是“owner”的概念。

定义一个js函数,如

function doSomething() {
   this.style.color = '#cc0000';
}
这时候的this是window

如果执行:

elem.onclick = doSomething;
this就是elem了

如果这样定义:

<element onclick="doSomething()">
只是表明click的时候去执行doSomething, this还是window

看个例子:

var name=1;
function ff(){
    var name = 2;
    alert(this.name);
}

ff()
这时候打印的就是1

============================================================

说说闭包(closure), http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 这篇文章讲的非常通俗易懂了。

很多语言都有闭包这个特性,当然python2中不支持

def outerFun():
    outerVar = 0
    def innerFun():
        outerVar += 1
    print outerVar
    return innerFun
这样干会出错,出错分析有人写了一个很详细的介绍  http://linluxiang.iteye.com/blog/789946

 python3加了一个nonlocal关键字,来支持闭包,不过还是很不爽。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值