zoukankan      html  css  js  c++  java
  • js 关键字 in 的使用方法

    for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。

      对于数组 ,迭代出来的是数组元素 但不推荐,因为不能保证顺序,而且如果在Array的原型上添加了属性,这个属性也会被遍历出来,所以 
      最好数组使用正常的for循环,对象使用for-in循环
      对于对象 ,迭代出来的是对象的属性;

      var obj = {
        "key1":"value1",
        "key2":"value2",
        "key3":"value3"
      };

      function EnumaKey(){
        for(var key in obj ){
          alert(key);
        }
        }

        function EnumaVal(){
          for(var key in obj ){
            alert(obj[key]);
            }
          }

    javascript中in关键字还有下面的作用
    定义:

    in操作符用来判断某个属性属于某个对象,可以是对象的直接属性,也可以是通过prototype继承的属性。
    var Fn = function () { this.age = 1; };
    Fn.prototype.name = 'jim';
    // Fn.prototype.age = undefined;
    var f = new Fn();
    // hasOwnProperty
    // 如何判断属性是被继承的???
    console.log( 'age' in f && !f.hasOwnProperty( 'age' ) );
    // age 可能存在原型链上, 也可能不存在

    // 如果属性值就是 null 或 undefined, 那么此时 f.age 就无法判断了

    对于一般的对象属性需要用字符串指定属性的名称

    如:
    var mycar = {make: "Honda", model: "Accord", year: 1998};
    "make" in mycar // returns true
    "model" in mycar // returns true


    如果你使用delete操作符删除了一个属性,再次用in检查时,会返回false,如:

    var mycar = {make: "Honda", model: "Accord", year: 1998};
    delete mycar.make;
    "make" in mycar; // returns false

    var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
    delete trees[3];
    3 in trees; // returns false
    如果你把一个属性值设为undefined,但是没有使用delete操作符,使用in检查,会返回true.

    var mycar = {make: "Honda", model: "Accord", year: 1998};
    mycar.make = undefined;
    "make" in mycar; // returns true

    var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
    trees[3] = undefined;
    3 in trees; // returns true

  • 相关阅读:
    ajax原理和XmlHttpRequest对象
    在vue项目中 如何定义全局变量 全局函数
    杂乱知识 -- 记录工作或学习中遇到的一些点
    JavaScript中的数组遍历forEach()与map()方法以及兼容写法
    cookie的存取删
    微信小程序中公用内容
    mysql 多实例
    yum 安装和卸载
    rpm 安装卸载
    git blame
  • 原文地址:https://www.cnblogs.com/libin-1/p/5972222.html
Copyright © 2011-2022 走看看