美文网首页
for in 循环方法注意事项

for in 循环方法注意事项

作者: 博来不惊 | 来源:发表于2018-02-02 10:02 被阅读0次

for...in 语句用于遍历数组或者对象的属性.

一般情况下,for in 循环只会遍历我们自定义的属性,原型上默认的属性不会遍历出来。例如Object.prototype.toString()、Object.prototype.hasOwnProperty ()是不会被遍历出来的。

但在实际应用中,如果是在原型中新增属性或者方法,for...in会将原型中新增的属性和方法遍历出来

举个例子:

Object.prototype.score = '97';
let people = {
    name:'小红',
    age : 15,   
}
for(let key in people ){
    console.log(key+':'+people[key]);
}
>>>>>>
>name:小红
>age:15
>score:97

很明显上述的score一项是我们不希望看到的,解决方法如下:

Object.prototype.score = '97';
let people = {
    name:'小红',
    age : 15,   
}
for(let key in people ){
if(!Object.prototype.hasOwnProperty.call(people,key)) continue;
    console.log(key+':'+people[key]);
}
>>>>>>
>name:小红
>age:15

obj.hasOwnProperty(prop)用来判断某个对象是否含有指定的属性的,返回值为Boolean该方法会忽略掉那些从原型链上继承到的属性

使用 hasOwnProperty 方法判断属性是否存在:

let o = new Object();
o.prop = 'exists';

function changeO() {
  o.newprop = o.prop;
  delete o.prop;
}

o.hasOwnProperty('prop');   // 返回 true
changeO();
o.hasOwnProperty('prop');   // 返回 false

相关文章

  • for in 循环方法注意事项

    for...in 语句用于遍历数组或者对象的属性. 一般情况下,for in 循环只会遍历我们自定义的属性,原型上...

  • 12、 递归、泛型、增强for循环、方法重写

    一、递归 递归:方法内部调用方法本身。 递归注意事项:a: 递归一定要有出口,否则会发生死循环;b: 递归的次...

  • vue-router的beforeEach全局守卫,

    注意事项1、to.path === "/login";这个判断必须要有的,否则会出现死循环。2、路由守卫的方法要在...

  • JS常用循环函数

    本文将汇总JS常用循环方法的使用方法和注意事项,以防用时纠结用哪个好。 1.for 首当其冲的就是for了,一想起...

  • 数组方法--some

    1. 使用some查找数组中数据会效率更高 2. 注意事项 · some 方法遇true返回,即会停止循环· so...

  • 高效遍历像素

    高效遍历像素注意事项:1、at方法在需要随机访问像素的时候使用,绝不要在扫描图像时使用;2、使用较短的循环和多条语...

  • python萌新入坑记(其二)

    for循环基本用法 1.遍历 2.赋值(数组快速赋值) 注意事项:for循环以首行缩进来划分是否循环结束。如果fo...

  • Js中循环删除数组元素

    JavaScript里在for循环里splice删除数组指定元素的注意事项:需要删除多个元素时,在for循环里直接...

  • 11Runtime 小结

    使用注意事项和方法总结

  • 超全的12种数组去重的方法

    方法1、双重for循环 这是一个最笨的方法,双重循环。 方法2、for循环 +findIndex 主要利用find...

网友评论

      本文标题:for in 循环方法注意事项

      本文链接:https://www.haomeiwen.com/subject/mkyszxtx.html