zoukankan      html  css  js  c++  java
  • for..in...时,注意hasOwnProperty验证

    for..in...时,注意hasOwnProperty验证

    var obj = {

                    a: 10,

                    b: 20

                };

                

                // 注意词句代码

                Object.prototype.c = 30;

     

                var item;

                for (item in obj) {

                    console.log(item);

         console.log(obj[item]);

                }

     

    输出: a b c

    输出:10 20 30

     

    以上代码中,注意中间标注释的句子。这句代码加与不加,会对下面的for..in..循环产生影响。加上了就输出“c”,不加就不输出“c”。道理很简单,for..in..循环不光能遍历obj对象本身就有的属性,还能遍历obj原型中的属性。

    要想屏蔽掉原型中的属性,就用hasOwnProperty函数,如下:

    for (item in obj) {

        if (obj.hasOwnProperty(item)) {

            //if (Object.prototype.hasOwnProperty.call(obj, item)) {

                console.log(item);

               }

          }

     

    这两句if判断语句,都可以用,效果是一样的。第一个代码可读性好,第二个效率相对较高。建议,没有特殊情况,用第一个即可。

  • 相关阅读:
    iBatis.Net(2):基本概念与配置
    iBatis.Net(4):DataMapper API
    iBaits.Net(1):简介与安装
    在YII项目中使用ckeditor和ckfinder快速部署文本编辑器并实现图片上传
    iBatis.Net(6):Data Map(深入)
    基于.net mvc的校友录(开篇)
    Ubuntu下建立tftp服务+我安装过程出现的问题
    2013年了,今年我将毕业
    路由器系统的内存储布局
    基于.net mvc的校友录(一、前台需求设计)
  • 原文地址:https://www.cnblogs.com/laneyfu/p/6432548.html
Copyright © 2011-2022 走看看