• 转: JavaScript 获取对象属性和方法


     

    一、获取对象属性和方法

    Object.keys()for in 返回对象的可枚举属性和方法名称数组
    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
    复制代码

     

  • 相关阅读:
    SVN--代码状态检查(图文并茂)
    SVN服务器的环境搭建(图文并茂)
    SVN基本配置--创建版本库(图文并茂)
    GPS定位(GPS导航)GPS授时三者是一个概念吗?
    北斗授时服务器(北斗时钟服务器)助力工业组态监控系统
    浅谈PTP精密时钟同步(GPS北斗授时)原理及应用
    NTP时间同步服务器(时钟服务器)如何助力桥梁监控系统的?
    网络时间服务器(NTP服务器)应用铁路计算机联锁系统
    NTP时钟服务器(时钟系统)助力阜阳卷烟厂
    子母钟系统(GPS授时系统)工作模式介绍
  • 原文地址:https://www.cnblogs.com/ziqian9206/p/7246497.html
Copyright © 2020-2023  润新知