一、获取对象属性和方法

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

转: JavaScript 获取对象属性和方法的更多相关文章

  1. JavaScript 获取对象属性和方法

    ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...

  2. JavaScript 访问对象属性和方法及区别

    这篇文章主要介绍了浅析JavaScript访问对象属性和方法及区别的相关资料,仅供参考 属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸. ...

  3. javascript window对象属性和方法

    window对象 window对象表示一个浏览器窗口或一个框架.在客户端JavaScript中,window对象是全局对象,所有的表达式 都在当前的环境中计算.也就是说,要引用当前窗口根本不需要特殊的 ...

  4. JS获取对象“属性和方法”的方法

    平时在写的代码过程中,经常会遇到对对象Object的数据处理.而在对对象的数据处理中,操作最频繁的是“数据引用”.“值的修改”.“获取关键字(属性)”.平时最烦的也是“获取关键字”,经常忘记怎么去获取 ...

  5. 浅析JavaScript访问对象属性和方法及区别

    属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸.跳跃等. 在JavaScript中通常使用”."运算符来存取对象的属性的值.或 ...

  6. javascript Location对象属性和方法

    Location对象 Location对象包含有关当前URL的信息 https://blog.csdn.net/u010953692/article/details/80901035#3 https( ...

  7. 第五课 JAVA反射获取对象属性和方法(通过配置文件)

    Service1.java package reflection; public class Service1 { public void doService1(){ System.out.print ...

  8. JS获取对象“属性”的方法

    var testObj= new Object(); testObj.name = "shangguan"; testObj.age= ; testObj.action = fun ...

  9. JavaScript原生对象属性和方法详解——Array对象

    http://www.feeldesignstudio.com/2013/09/native-javascript-object-properties-and-methods-array/ lengt ...

随机推荐

  1. 【转】shell学习笔记(六)——流程控制之for循环

    基本语法格式: for 变量 in 列表 do 命令行(通常用到循环变量) done ********Linux Shell for循环写法总结******** for((i=1;i<</ ...

  2. Windows--查看使用某端口的进程

    场景: 有时候我们希望查找某个端口被那个进程使用,如何操作呢? 比如查找8000端口被按个进程使用? 首先使用netstat -ano |grep 8000查看 13776就是使用的进程ID 然后使用 ...

  3. Codeforces C. Classroom Watch

    C. Classroom Watch time limit per test 1 second memory limit per test 512 megabytes input standard i ...

  4. scanf后面跟一个getchar

    scanf(“%d",&a): if(getchar() != '\n') printf();else printf(); 这种情况下,我有点迷惑,就做了个实验,结论是: 1.当输完 ...

  5. [Bug] 解决 Sql Server 数据库死锁问题

    SELECT request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tra ...

  6. 3.移植驱动到3.4内核-移植DM9000C驱动

    在上章-使内核支持烧写yaffs2,裁剪内核并制作补丁了 本章,便开始移植以前2.6内核的驱动到3.4新内核 1.介绍 首先内核更新,有可能会重新定义新的宏,去除以前的宏,以前更改函数名等 所以移植驱 ...

  7. 利用 secureCRT 直接上传下载文件 (sz,rz)

    在window下向linux传送文件的方法. 首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查 ...

  8. Yii的Relational Active Record三张表连接查询

    需求如下: 查询book表信息,同时关联entitystags表,以entitystags的字段eid关联book的主键,再关联查询tags表,以entitystags表的tid字段关联tags表的主 ...

  9. ansible playbook实践(一)-基础环境安装

    1 介绍 Ansible 是一个系统自动化工具,用来做系统配管理,批量对远程主机执行操作指令. 2 实验环境 ip 角色 192.168.40.71 ansible管控端 192.168.40.72 ...

  10. BZOJ 3209: 花神的数论题 [数位DP]

    3209: 花神的数论题 题意:求\(1到n\le 10^{15}\)二进制1的个数的乘积,取模1e7+7 二进制最多50位,我们统计每种1的个数的数的个数,快速幂再乘起来就行了 裸数位DP..\(f ...