[Javascript] Use JavaScript's for-in Loop on Objects with Prototypes
JavaScriptOn for in with 39 use
2023-09-14 08:59:17 时间
Loops can behave differently when objects have chained prototype objects. Let's see the difference we get when we use the for-in loop on an object without a prototype, as opposed to an object with a prototype object.
Let's say you have an object:
const obj = { firstName: "Bar", lastName: "Foo" };
Once you use for in loop:
for (let property in obj) { console.log(property); // firstName, lastName n++; } console.log(n); // 2
We can add one prototype prop to the obj:
const protoObj = { hair: "Brown" }; Object.setPrototypeOf(obj, protoObj);
On the prototype chain we have 'hair' prop.
Now, if you use for in loop again:
for (let property in obj) { console.log(property); //firstName, lastName, hair n++; } console.log(n); // 3
Be to notice, 'hair' is on the prototype chain,is not on obj's own property, so if we want to fileter 'hair':
for (let property in obj) { if (obj.hasOwnProperty(property)) { console.log(property); // firstName, lastName n++; } } console.log(n); // 2
相关文章
- javascript中js实现导出CSV文件功能
- Javascript的private属性
- 使用 JavaScript 实现 PHP 函数功能:PHP.JS
- ORA-54036: cannot define referential constraint with ON DELETE SET NULL clause on virtual column ORACLE 报错 故障修复 远程处理
- 对javascript中String类型的拓展详解编程语言
- 利用Java来压缩 JavaScript 代码详解编程语言
- JavaScript学习总结(二十)——Javascript非构造函数的继承详解编程语言
- 解决Eclipse报errors running builder ‘javascript validator’ on project详解编程语言
- 的区别MySQL中ON与IN的区别探讨(mysql中on与in)
- MySQL连接查询:活学活用ON条件(mysql连接查询on)
- MySQL中如何使用ON语句(mysql中 on怎么用)
- Oracle中ON关键字的精彩运用(oracle中on的使用)
- Oracle中妙用ON子句优化SQL查询(oracle on子句)
- 一个加密JavaScript的开源工具PACKER2.0.2
- JavaScript的parseInt进制问题
- javascript线性渐变三
- JavaScript中使用正则匹配多条,且获取每条中的分组数据
- Javascript异步加载详解(浏览器在javascript的加载方式)
- javascript获取form里的表单元素的示例代码
- 详解Javascript动态操作CSS
- 原生JavaScript+LESS实现瀑布流
- JavaScript判断变量是否为空的自定义函数分享
- JavaScript实现在数组中查找不同顺序排列的字符串