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数组

  • 相关阅读:
    MVC Form
    The way to learn english
    Test FastThree
    C#中Trim()、TrimStart()、TrimEnd()的用法
    c# Dictionary 简介
    visual studio快捷键大全
    ASP.NET MVC 中 ActionResult
    MVC4中使用 Ninject
    MVC Chapter 12 Overview of MVC Projects
    ASP.NET Razor
  • 原文地址:https://www.cnblogs.com/vivenZ/p/6737199.html
Copyright © 2011-2022 走看看