美文网首页
遍历对象实例的属性和方法

遍历对象实例的属性和方法

作者: 黄金林 | 来源:发表于2018-08-05 00:01 被阅读0次

前言

遍历对象实例的方法有3种,1.通过for in,2通过Object.keys方法,3.通过Object,getOwnPropertyNames
这三种方式默认不可枚举的所有属性和方法,包括:hasOwnProperty()、propertyIsEnumerable()、toLocaleString()、toString()和valueOf()。ECMAScript5也将constructor和prototype属性的[[Enumerable]]特性设置为false,但并不是所有浏览器都照此实现。

class Person {
  constructor(){
    this.name = ""
    this.age = 0
  }
  sayName(){
    console.log('sayName')
  }
}
var o1 = new Person()
/*
3种写法,都输出name,age没有输出sayName,constructor
*/
//第1种方式
for(var prop in o1){
  console.log(prop)
}
//第2种方式
console.log(Object.keys(o1))
//第3种方式
console.log(Object.getOwnPropertyNames(o1))

示例
我们希望能输出对象实例的所有属性和原型的方法需要依靠Object.getOwnPropertyNames

function getOwnPropertyNames(obj){
  return [...Object.getOwnPropertyNames(Object.getPrototypeOf(obj)),
...Object.getOwnPropertyNames(obj)];
}
console.log(getOwnPropertyNames(o1))

示例
另外
1.Object.hasOwnProperty只能用作判断实例是否包含属性和方法,而无法判断原型是否包含,
2.in操作可以判断实例和元素是否包含属性和方法

var o1 = new Person()
console.log(o1.hasOwnProperty('name')) // true
console.log(o1.hasOwnProperty('sayName')) // false

console.log('name' in o1) //true
console.log('sayName' in o1) //true

从而可以定义一个判断原型是否包含属性和方法的方法

function hasPrototypeProperty(obj, name){
  return !obj.hasOwnProperty(name) && name in obj;
}

示例

相关文章

  • Set和Map数据结构

    Set 类似数组无重复值 Set实例的属性和方法 遍历操作 Map 类似对象,键值对集合 Map的属性和方法 遍历...

  • 遍历对象实例的属性和方法

    前言 遍历对象实例的方法有3种,1.通过for in,2通过Object.keys方法,3.通过Object,ge...

  • 原型继承

    一、原型判断方法*术语解释:成员=属性+方法实例成员:实例属性和实例方法原型成员:原型对象属性和原型对象方法1、原...

  • 类方法 VS 静态方法

    类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法。 @staticmethod@classmetho...

  • python —— 面向对象

    概念 特性 类与对象的方法和属性 实例方法:对象拥有的方法,把函数(self)封装到类里面实例属性:对象拥有的属...

  • 对象的属性、方法

    一、对象实例的属性和方法 对象实例常用的属性、方法如下: 以下是具体是使用方法:1、constructor 2、h...

  • python面向对象编程四要素总结

    面向对象编程的四要素: 类、属性、函数(方法)、对象(实例) 类: 一群有着相同属性和函数(方法)的对象(实例)的...

  • python中实例属性和类属性

    一、 什么是实例和类属性 实例属性:声明在方法中,通过self声明的属性,是实例对象所特有的属性,而实例对象是类创...

  • Android内存机制—堆和栈

    2.对象实例数据 实际上是保存对象实例的属性,属性的类型和对象本身的类型标记等,但是不保存实例的方法。实例的方法是...

  • JS基础:对象

    万物皆对象~对象,是一个具体的事物。对象中会有属性和方法。是类的具体的一个实例。 字面量创建对象 遍历对象 for...

网友评论

      本文标题:遍历对象实例的属性和方法

      本文链接:https://www.haomeiwen.com/subject/teevvftx.html