for in
循环
和 in
操作符一样,for in
循环同样在查找对象属性时遍历原型链上的所有属性。
注意: for in
循环不会遍历那些 enumerable
设置为 false
的属性;比如数组的 length
属性。
// 修改 Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
console.log(i); // 输出两个属性:bar 和 moo
}
由于不可能改变 for in
自身的行为,因此有必要过滤出那些不希望出现在循环体中的属性,
这可以通过 Object.prototype
原型上的 hasOwnProperty
函数来完成。
注意: 由于 for in
总是要遍历整个原型链,因此如果一个对象的继承层次太深的话会影响性能。
使用 hasOwnProperty
过滤
// foo 变量是上例中的
for(var i in foo) {
if (foo.hasOwnProperty(i)) {
console.log(i);
}
}
这个版本的代码是唯一正确的写法。由于我们使用了 hasOwnProperty
,所以这次只输出 moo
。
如果不使用 hasOwnProperty
,则这段代码在原生对象原型(比如 Object.prototype
)被扩展时可能会出错。
一个广泛使用的类库 Prototype 就扩展了原生的 JavaScript 对象。
因此,但这个类库被包含在页面中时,不使用 hasOwnProperty
过滤的 for in
循环难免会出问题。
总结
推荐总是使用 hasOwnProperty
。不要对代码运行的环境做任何假设,不要假设原生对象是否已经被扩展了。
分享到:
相关推荐
PHP, MySQL & JavaScript All-in-One For Dummies 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
Helps you grasp the technologies that power web applications Covers PHP version 7.2 Includes coverage of the latest updates in web development Perfect for developers to use to solve problems
开源项目-pazams-go-for-javascript-developers.zip,pazams/go-for-javascript-developers
JavaScript应用实例-004-循环for.js
该文档是ArcGIS-API-for-Javascript-开发教程,通过教程可以入门arcgis网页开发
ArcGis-for-javaScript最全中文API
ArcGis-for-javaScript最全中文API
PHP, MySQL, JavaScript All-in-One For Dummies 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 ...
JavaScript之for循环语句(源代码)JavaScript之for循环语句(源代码)JavaScript之for循环语句(源代码)JavaScript之for循环语句(源代码)JavaScript之for循环语句(源代码)JavaScript之for循环语句(源代码)JavaScript之...
可以很容易理解javascript的for in循环的使用
JavaScript应用实例-005-循环while.js
JavaScript应用实例-003-循环break.js
JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通...
ArcGis-for-javaScript最全中文API
gisweb ArcGis-for-javaScript最全中文API
JavaScript教程--从入门到精通.pdf JavaScript教程--从入门到精通.pdf JavaScript教程--从入门到精通.pdf JavaScript教程--从入门到精通.pdf
图片循环显示.rar图片循环显示.rar图片循环显示.rar图片循环显示.rar图片循环显示.rar图片循环显示.rar
JavaScript应用实例-王者荣耀循环挑战一个脚本.js
循环显示的文字.rar循环显示的文字.rar
除了传统的for循环,JavaScript为遍历操作定义了for-in方式,根据数据源的不同,在使用时存在差异。 (1)遍历对象: 代码如下: var fish = { head : 1, tail : 1, } for(var prop in fish) { console.log(fish...