var x=1; function test() { alert(this.x); alert(x); } function y() { var z={x:2}; var x=5; test.call(z); } y(); test();
运行结果为:2 1 1 1
1.其中this不固定 ,指的是函数运行时所在的对象 ,obj.func 或 func.aplpy(obj) this=obj
2.而函数里的变量则是指函数定义时作用域内的变量,与调用处无关 ,这就是闭包 closure ,这就是 脚本语言的一个特性,由于 脚本语言本身就是有 一个宿主程序 来解释执行他的 ,故 context 上下文信息 可以由宿主程序跟踪记录 ,随时查询。
3.ps: jdk7 据说要 加入 闭包特性