zoukankan      html  css  js  c++  java
  • js中查看js对象的属性

    一、创建Ibject

    1、

    在js中创建对象并赋值

    var testObj= new Object();
    testObj.name = "shangguan";
    testObj.age= 25;
    testObj.action = function () {
        return this.name;
    }

    2、直接新建对象,不通过构造函数(而且直接新建速度比构造器还快一些!

    var testObj={};
    testObj.name = "shangguan";
    testObj.age= 25;
    testObj.action = function () {
        return this.name;
    };

    3、重载构造器,让构造器在构造对象时按预定的属性构建。

    // 创建一个对象的构造方法
    function newObj(name, age) {
        this.name = name;
        this.age= age;
        this.action = function () {
            return this.name;
        }
    }
    // 创建一个对象
    var testObj= new newObj("shangguan", 25);
    二、使用Object对象

    1、对象内置属性方法:Object.keys();该方法返回一个数组,数组内包括对象内可枚举属性以及方法名称。数组中属性名的排列顺序和使用 for...in 遍历该对象时返回的顺序一致。

      // 通过调用Object.keys()方法,获取对象上已定义(可枚举)的属性和方法

     var keys= Object.keys(testObj);
      console.log(keys); // 输出 keys ["name", "age", "action"]
    

      

    2、Object.getOwnPropertyNames():方法返回一个指定对象所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组

      该数组是 obj自身拥有的枚举或不可枚举属性名称字符串集合。 数组中枚举属性的顺序与通过 for...in 循环(或 Object.keys())迭代该对象属性时一致。数组中不可枚举属性的顺序未定义。

     var keys = Object.getOwnPropertyNames(testObj);
      console.log(keys);  // 输出 keys ["name", "age", "action"]
    

     

    3、当然除了以上两个外,还有最原始的 for...in 循环(估计是平时循环用的多了,反倒是这个不怎么用!)

    var keys =[];
      for(var i in testObj){
          keys.push(i);
      }
      console.log(keys);   // keys ["name", "age", "action"]

    4、上面三者之间的关系

    var testObj = Object.create({}, {
        getFoo: {
            value: function () {
                return this.foo;
            },
            enumerable: false
        }
    });
    testObj.name = "shangguan";
    testObj.age = 25;
    testObj.action = function(){
      return this.name;
    };
    function getKeys() {
        // 获取对象可枚举和不可枚举的属性
        console.log(Object.getOwnPropertyNames(testObj));   //输出:["getFoo", "name", "age", "action"]
        // 获取对象可枚举的属性
        console.log(Object.keys(testObj));  //输出:["name", "age", "action"]
        // 获取对象可枚举的属性
        for (var i in testObj) {
            console.log(i);     //输出 name,age,action
        }
        //返回直接定义在该对象上的可枚举属性,非继承。通过hasOwnProperty()方法可以将那些属性是对象自身(非继承)属性筛选出来,从而将不可枚举属性排除出去
        //obj.hasOwnProperty(prop): prop要检测的属性,字符串 名称或者 Symbol。     返回值:用来判断某个对象是否含有指定的属性 的Boolean值
        for (var i in testObj) {
            if(testObj.hasOwnProperty(i)) {
                console.log(i);
            }    //输出 name,age,action
        }
    }
    

      

  • 相关阅读:
    Neko's loop HDU-6444(网络赛1007)
    Parameters
    SETLOCAL
    RD / RMDIR Command
    devenv 命令用法
    Cannot determine the location of the VS Common Tools folder.
    'DEVENV' is not recognized as an internal or external command,
    How to change Visual Studio default environment setting
    error signing assembly unknown error
    What is the Xcopy Command?:
  • 原文地址:https://www.cnblogs.com/wwwcf1982603555/p/9760663.html
Copyright © 2011-2022 走看看