首页 > 代码库 > javascript知识点

javascript知识点

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

javascript知识点