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判断语句,都可以用,效果是一样的。第一个代码可读性好,第二个效率相对较高。建议,没有特殊情况,用第一个即可。

最新文章

  1. JS / Egret 单笔手写识别、手势识别
  2. wampServer图标为橙色无法启动原因之一
  3. MySQL exists的用法介绍
  4. 百度echarts地图扩展动态加载geoCoord
  5. jquery与各种UI框架的导入要注意的地方
  6. java-集合类
  7. AngularJs定制样式插入到ueditor中的问题总结
  8. Eclipse tomcat先启动成功,然后再报超时原因之一
  9. java总结第二次(剩余内容)//类和对象1
  10. java中判断从数据库中取出的字段是否为空
  11. Mybatis学习(壹)
  12. struts 2 <s:select> 标签
  13. win7+cygwin+hadoop+eclipse
  14. C++ Map 容器
  15. Ninject之旅之十三:Ninject在ASP.NET MVC程序上的应用(附程序下载)
  16. eclipse出现错误:he type java.util.Map$Entry cannot be resolved. It is indirectly referenced
  17. Leetcode_154_Find Minimum in Rotated Sorted Array
  18. react-redux 的使用
  19. css全局样式基础代码
  20. 客户端哈希加密(Javascript哈希加密,附源码)

热门文章

  1. hql实现对表的某几个(部分)字段查询
  2. 洛谷1303 A*B Problem 解题报告
  3. LightOJ1197【数学】
  4. HDU5122【水】
  5. 走进VR游戏开发的世界
  6. WindApi2 , WindOriginalApiLibrary 突然不兼容问题
  7. IQueryable 和IEnumberable的区别
  8. Zju1610 Count the Colors(lazy标记详解)
  9. JQuery | trigger() 方法
  10. EM算法(徐亦达)笔记