关于JavaScript的一些使用心得

JavaScript这门语言是LZ最喜欢的编程语言之一,为什么说喜欢呢?因为LZ认为JavaScript的语法优美,且是动态,弱类型的脚本语言。接下来LZ将列举出编写JavaScript的时候的一些注意事项或者心得。

1、关于闭包

闭包是JavaScript的一个特性,什么是闭包呢?通过字面意思,我们能够猜到,就是封闭的一些函数的集合,也就是在闭包内的函数,是不能被外部所调用,可以理解为面向对象的私有方法。语法格式如下:

(function(){
     // coding
});
我们知道JavaScript的函数内可以编写函数,那么对于闭包,我们先定义一个匿名函数,然后再匿名函数内部编写私有函数。

说到闭包,我们马上会想到JavaScript的事件绑定机制,给出下面的示例:

for(var i = 0;i < 5;i++){

   $("a").click(function(){
        console.log(i);
   });
}

当点击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++){
    (function(index){
      $("a").click(function(){
        console.log(index);
     });
   })(i);
}
我们可以看到在循环内部click事件之前加入了闭包,这样每次绑定都通过匿名函数将i传给click事件,这样点击后就能打赢出1,2,3,4,5了。我们可以看到匿名函数和函数最后多了一个参数,这段代码相当于:
(function(){
   var index = i;
});
2、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.

3、for和for...in

JavaScript的for循环和for...in循环是完全不一样的两种循环,我们来举个列子说明:

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)){

   }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lynnlovemin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值