zoukankan      html  css  js  c++  java
  • for in 与for 与hasOwnProperty

    在遍历一个对象的时候我们会使用到for in属性。

    现有对象和数组如下:

    var filght = {
               number: 1,
               status: 'watit',
               arrival: [1,2,3],
               addName: function () {
                   return this.number + 99;
               }
           }
           var arr = [
               'name',
               'age',
               'number'
           ]

    对于数组来说我们可以使用for来遍历 也可以使用for

    for(var i=0; i< arr.length; i++){
            console.log(arr[i]);
        }
    for(var k in arr){
               console.log(k +':'+arr[k])
           }

    现在要遍历filght里面的属性,我们可以使用for in 但是不能使用 for来遍历,因为对象没有长度。

    for(var k in filght){
               console.log(k +':'+filght[k])
           }

    那么for 和for in 遍历最大的区别是for in可以遍历出原型对象的属性,但是for 不行。

    现在我们给Array的原型添加属性。

    Array.prototype.sayName = '111'

    然后遍历。

    for(var k in arr){
          console.log(k +':'+arr[k])
     }
    console.log('-----------------------------------------------------');
     for(var i=0; i< arr.length; i++){
         console.log(arr[i]);
    }

    得到结果

    证明 for in 循环的确可以遍历到原型对象上的属性。那么如果我们使用了for in 遍历,但是不想要得到原型上的属性怎么办呢。

    对象不可以使用for 循环遍历,所有有一个hasOwnProperty 可以解决。

    例如:先给Object原型添加属性

           Object.prototype.sayName = function(){
               return "viven";
           }

    然后通过for in遍历

    for(var k in filght){
               console.log(k +':'+ filght[k]);
           }

    通过hasOwnProperty 过滤

    for(var k in filght){
               console.log(k +':'+ filght[k]);
           }
           console.log('===========================================')
           for(var k in filght){
               if(filght.hasOwnProperty(k)){
                    console.log(k +':'+ filght[k]);
                }
           }

    得到结果

     

    现在原型上的属性已经被过滤掉了。这个方法同样适用于Array数组

  • 相关阅读:
    非确定的自动机NFA确定化为DFA
    正规式到正规文法与自动机
    第六次 正规文法与正规式
    作业五 词法分析程序的设计与实现
    作业四:
    作业三
    作业2.文法和语言
    编译原理 作业一
    李瑞红201771010111《第三周学习总结》
    李瑞红201771010111第二周实验总结报告
  • 原文地址:https://www.cnblogs.com/vivenZ/p/6737199.html
Copyright © 2011-2022 走看看