• JavaScript 获取对象属性和方法


     ShineJaie 原创整理,转载请注明出处。

     一、获取对象属性和方法

    Object.keys() 返回对象的可枚举属性和方法名称数组
    Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。
     1     // 创建一个对象的构造方法
     2     function myObj(name, attr) {
     3         this.name = name;
     4         this.attr = attr;
     5 
     6         this.sayHi = function () {
     7             return 'hi everyone!!!';
     8         }
     9     }
    10 
    11     // 创建一个对象
    12     var myTester = new myObj("shinejaie", 1)
    13     // 获取直接在对象上定义(可枚举)的属性和方法
    14     var arr = Object.keys(myTester);
    15     console.log('arr', arr); // 输出 arr ["name", "attr", "sayHi"]
    16 
    17     // 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。
    18     console.log("attr", Object.getOwnPropertyNames(myTester)); // 输出 attr ["name", "attr", "sayHi"]
    19 
    20     // 在 Object 原型上增加一个属性
    21     Object.prototype.newShine = "it's me";
    22 
    23     // 返回可枚举属性一直找到该对象的原型链
    24     for (var i in myTester) {
    25         console.log(i);
    26     }
    27     // 输出 name,attr,sayHi,newShine
    28 
    29     // 返回直接定义在该对象上的可枚举属性
    30     for (var i in myTester) {
    31         if (myTester.hasOwnProperty(i)) {
    32             console.log(i);
    33         }
    34     }
    35     // 输出 name,attr,sayHi

    二、Object.keys()、Object.getOwnPropertyNames()、for...in...对比

     1     // 不可枚举的对象属性
     2     var nonenum = Object.create({}, {
     3         getFoo: {
     4             value: function () {
     5                 return this.foo;
     6             },
     7             enumerable: false
     8         }
     9     });
    10     nonenum.foo = 1;
    11     nonenum.asj = 2;
    12 
    13     // 获取对象可枚举或不可枚举的属性
    14     console.log(Object.getOwnPropertyNames(nonenum).sort()); // 输出 ["asj", "foo", "getFoo"]
    15 
    16     // 获取对象可枚举的属性
    17     console.log(Object.keys(nonenum).sort()); // 输出 ["asj", "foo"]
    18 
    19     // 返回直接定义在该对象上的可枚举属性
    20     for (var i in nonenum) {
    21         if (nonenum.hasOwnProperty(i)) {
    22             console.log(i); // 输出 foo asj
    23         }
    24     }

     三、分别获取JavaScript对象属性名和方法名

     1     // 创建一个对象的构造方法
     2     function myObj(name, attr) {
     3         this.name = name;
     4         this.attr = attr;
     5 
     6         this.sayHi = function () {
     7             return 'hi everyone!!!';
     8         }
     9     }
    10 
    11     // 创建一个对象
    12     var myTester = new myObj("shinejaie", 1)
    13 
    14     // 获取对象方法
    15     for (var i in myTester) {
    16         if (myTester.hasOwnProperty(i) && typeof myTester[i] == "function") {
    17             console.log("对象方法: ", i, "=", myTester[i])
    18         }
    19     }
    20     // 输出 对象方法: sayHi = () { return 'hi everyone!!!'; }
    21 
    22     // 获取对象属性
    23     for (var i in myTester) {
    24         if (myTester.hasOwnProperty(i) && typeof myTester[i] != "function") {
    25             console.log("对象属性: ", i);
    26         }
    27     }
    28     // 输出 对象属性: name 对象属性: attr

     

     

     

     

  • 相关阅读:
    Lookup注解
    解决数据量大,分页查询慢的方案
    一个http的请求分析
    MYSQL
    什么是性能优化
    编码规范随笔
    装饰者模式
    单例模式
    J.U.C并发包(1)
    Java内存模型
  • 原文地址:https://www.cnblogs.com/shinejaie/p/5231195.html
Copyright © 2020-2023  润新知