JavaScript这门语言是LZ最喜欢的编程语言之一,为何说喜欢呢?由于LZ认为JavaScript的语法优美,且是动态,弱类型的脚本语言。接下来LZ将列举出编写JavaScript的时候的一些注意事项或者心得。编程
一、关于闭包数组
闭包是JavaScript的一个特性,什么是闭包呢?经过字面意思,咱们可以猜到,就是封闭的一些函数的集合,也就是在闭包内的函数,是不能被外部所调用,能够理解为面向对象的私有方法。语法格式以下:闭包
(function(){ // coding });
咱们知道JavaScript的函数内能够编写函数,那么对于闭包,咱们先定义一个匿名函数,而后再匿名函数内部编写私有函数。
说到闭包,咱们立刻会想到JavaScript的事件绑定机制,给出下面的示例:编程语言
当点击a标签输出什么呢?对于上面的这段代码,若是对JavaScript不够了解的话,立刻会说:“会输入1,2,3,4,5”,那么正确的结果应该是会打印5个5,不少人会问?为何呢?在上面的这段代码,执行完for循环的时候,i的值是5,a标签绑定了5次click,那么最后点击的时候固然会输出5个5,可是若是咱们必定要输入1,2,3,4,5怎么办呢?这个时候就须要用到咱们的闭包:for(var i = 0;i < 5;i++){ $("a").click(function(){ console.log(i); }); }
for(var i = 0;i < 5;i++){ (function(index){ $("a").click(function(){ console.log(index); }); })(i); }
咱们能够看到在循环内部click事件以前加入了闭包,这样每次绑定都经过匿名函数将i传给click事件,这样点击后就能打赢出1,2,3,4,5了。咱们能够看到匿名函数和函数最后多了一个参数,这段代码至关于:
(function(){ var index = i; });
二、this指针
有人说JavaScript最难的当属this指针了,可是我不这么认为。当你真正理解了,也会认为this指针不过如此。对于JavaScript的this指代的是什么,我用一句话进行了总结:谁调用表明谁。什么意思呢?咱们经过一段代码来解释。函数
function Person(id,name){ this.id = id; this.name = name; this.getId = function(){ return this.id; }; }; var person = new Person(1,"lynn");
以上代码有不少this,我刚才说了谁调用表明谁,那么这些this是谁调用的呢?很明显,下面new了一个Person对象,那么就是person来调用,因此这里的this表明的都是person。咱们知道JavaScript是动态语言,因此能够动态的设置属性,因此既然this表明的是person,那么this.id天然就是给person对象增长属性id,而且赋值为传入的参数,因此咱们经过person.id 就能够获得值为1.
三、for和for...inthis
JavaScript的for循环和for...in循环是彻底不同的两种循环,咱们来举个列子说明:spa
for(var i = 0;i < 5;i++){ } for(var i in person){ }
for循环的i是索引,而for...in循环的i是对象属性,所以若是咱们要循环一个数组的元素的时候必定要用for循环,而须要获得对象的属性的时候,咱们要用for...in循环,可是在for...in循环属性的时候,JavaScript对每一个对象会加入一些内置的属性,所以咱们只想获得咱们本身定义的属性,须要用到hasOwnProperty()方法,判断是不是咱们本身定义的属性:
for(var i in person){ if(person.hasOwnProperty(i)){ } }