分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

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

发布时间:2023-09-06 01:21责任编辑:顾先生关键词:暂无标签

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

既然要"获取关键字",那么得首先有一个对象才行。创建对象的方式很多,我自己惯用的方式有三种:

1、通过原始构造函数 new Object();创建一个对象,然后赋值;

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);

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

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

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

   

  注意:在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。而在ES2015中,非对象的参数将被强制转换为一个对象。

  Object.keys("testObj");  // TypeError: "testObj" is not an object (ES5 code)  Object.keys("testObj");  //["name", "age", "action"] ?????????????(ES2015 code)

2、//Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。

// 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。

console.log("attr", Object.getOwnPropertyNames(myTester)); // 输出 attr ["name", "attr", "sayHi"]

// 在 Object 原型上增加一个属性

Object.prototype.newShine = "it‘s me";

// 返回可枚举属性一直找到该对象的原型链

for (var i in myTester) {

    console.log(i);

}

// 输出 name,attr,sayHi,newShine

// 返回直接定义在该对象上的可枚举属性

for (var i in myTester) {

    if (myTester.hasOwnProperty(i)) {

        console.log(i);

    }

}

// 输出 name,attr,sayHi

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

// 不可枚举的对象属性

var nonenum = Object.create({}, {

    getFoo: {

        value: function () {

            return this.foo;

        },

        enumerable: false

    }

});

nonenum.foo = 1;

nonenum.asj = 2;

// 获取对象可枚举或不可枚举的属性

console.log(Object.getOwnPropertyNames(nonenum).sort()); // 输出 ["asj", "foo", "getFoo"]

// 获取对象可枚举的属性

console.log(Object.keys(nonenum).sort()); // 输出 ["asj", "foo"]

// 返回直接定义在该对象上的可枚举属性

for (var i in nonenum) {

    if (nonenum.hasOwnProperty(i)) {

        console.log(i); // 输出 foo asj

    }

}

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

// 创建一个对象的构造方法

function myObj(name, attr) {

    this.name = name;

    this.attr = attr;

    this.sayHi = function () {

        return ‘hi everyone!!!‘;

    }

}

// 创建一个对象

var myTester = new myObj("shinejaie", 1)

// 获取对象方法

for (var i in myTester) {

    if (myTester.hasOwnProperty(i) && typeof myTester[i] == "function") {

        console.log("对象方法: ", i, "=", myTester[i])

    }

}

// 输出 对象方法: sayHi = () { return ‘hi everyone!!!‘; }

// 获取对象属性

for (var i in myTester) {

    if (myTester.hasOwnProperty(i) && typeof myTester[i] != "function") {

        console.log("对象属性: ", i);

    }

}

// 输出 对象属性: name 对象属性: attr

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

原文地址:http://www.cnblogs.com/donghuang/p/7765761.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved