for..in...时,注意hasOwnProperty验证
2024-08-30 10:24:38
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判断语句,都可以用,效果是一样的。第一个代码可读性好,第二个效率相对较高。建议,没有特殊情况,用第一个即可。
最新文章
- JS / Egret 单笔手写识别、手势识别
- wampServer图标为橙色无法启动原因之一
- MySQL exists的用法介绍
- 百度echarts地图扩展动态加载geoCoord
- jquery与各种UI框架的导入要注意的地方
- java-集合类
- AngularJs定制样式插入到ueditor中的问题总结
- Eclipse tomcat先启动成功,然后再报超时原因之一
- java总结第二次(剩余内容)//类和对象1
- java中判断从数据库中取出的字段是否为空
- Mybatis学习(壹)
- struts 2 <;s:select>; 标签
- win7+cygwin+hadoop+eclipse
- C++ Map 容器
- Ninject之旅之十三:Ninject在ASP.NET MVC程序上的应用(附程序下载)
- eclipse出现错误:he type java.util.Map$Entry cannot be resolved. It is indirectly referenced
- Leetcode_154_Find Minimum in Rotated Sorted Array
- react-redux 的使用
- css全局样式基础代码
- 客户端哈希加密(Javascript哈希加密,附源码)