标签:blog http io ar sp java on log bs
1:关于this的作用域,昨天看到一道这样的题;
var x=10;
var foo={
x:20,
obj:function(){
var x=30;
return this.x;
}
}
alert(foo.obj)();20 相当于foo.obj()
alert(foo.obj=foo.obj)();赋值,作用域到了window
alert(foo.obj,foo.obj)();作用域window
上面三个结果为啥跟30一点关系都没有啊,后来参考http://www.cnblogs.com/wangfupeng1988/p/3988422.html
才明白对象字面量创建函数的方式中obj不仅作为一个对象的一个属性,而且的确是作为对象的一个属性被调用。结果this就是foo对象,
第二个表达式相当于var fn=foo.obj;fn();这样作用域就到window了。
这里有别于构造函数方式创建对象,可参考http://www.cnblogs.com/zoujking/p/4158803.html 中调用构造函数的三种方式;
2:不经过第三个变量交换a,b值
var a=4,b=8
a=[b,b=a][0]; a=8//变为数组的形式
b=[b,b=a][1];b=4
参考:http://www.cnblogs.com/wangfupeng1988/p/4001284.html
http://www.cnblogs.com/ctriphire/p/4157980.html
标签:blog http io ar sp java on log bs
原文地址:http://www.cnblogs.com/zoujking/p/4162716.html