美文网首页
JS获取对象属性方法

JS获取对象属性方法

作者: 月满轩尼诗_ | 来源:发表于2019-11-07 23:09 被阅读0次

在JavaScript中,我们有4种方法可以获取对象中的属性,分别是for...inObject.keys()Object.getOwnPropertyNames()Reflect.ownKeys(),下面分别说下他们之间的区别:

for...in

for...in循环会遍历对象自身的所有属性,以及它原型上的属性,并且,for...in只遍历对象中可枚举的属性(enumerate为true)。像 Array 和 Object 使用内置构造函数所创建的对象都会继承自 Object.prototype 和 String.prototype 的不可枚举属性。

可枚举属性:简单来说就是JS对象中的属性是否可以列举出来。

Object.keys(obj)

它可以得到自身可枚举的属性,但得不到原型链上的属性,同时Symbols 属性也得不到。

Object.getOwnPropertyNames(obj)

它可以得到自身所有的属性(包括可枚举属性以及不可枚举属性),但得不到原型链上的属性, 当然Symbols 属性也得不到.

Reflect.ownKeys(obj)

它可以得到对象的所有属性,基本等同于上述的Object.getOwnPropertyNames(obj)加上Object.getOwnPropertySymbols(obj)返回之和,这里的getOwnPropertySymbols方法单独只返回对象中包含symbols属性。

如果不够清晰?下面我们可以使用代码来解释上述内容的描述:

const animal = {
  A: 1,
  B: 2,
  C: 3,
}
const cat = {
  D: 4,
  E: 5,
  [Symbol()]: 6,
}

cat.__proto__ = animal
Object.defineProperty(cat, "E", { enumerable: false }); //定义E属性为不可枚举

for (let attrs in cat) {
  console.log("for...in:", attrs) // A,B,C,D
}
console.log("Object.keys:", Object.keys(cat)) // [ 'D' ]
console.log("Object.getOwnPropertyNames:", Object.getOwnPropertyNames(cat)) // [ 'D', 'E' ]
console.log("Reflect.ownKeys:", Reflect.ownKeys(cat))  //  [ 'D', 'E', Symbol() ]

相关文章

  • JS获取对象属性方法

    在JavaScript中,我们有4种方法可以获取对象中的属性,分别是for...in、Object.keys()、...

  • AppleScript-record对象

    理解类似于OC中的字典,js中的对象 创建 获取属性the 属性名 of 对象 设置属性 获取属性数量

  • 原生JS中DOM元素的操作

    获取dom 修改属性 .获取对象的属性 .js获取非行内样式属性 innerHTML dom 属性设置与获取 Do...

  • java基础类-6-反射

    常用类 获取类类型 创建对象 获取属性 获取特定属性 方法和构造方法

  • python学习笔记-(4)面向对象

    类定义格式 添加和获取对象属性 类外面添加对象属性 类外面获取对象属性 类里面获取对象属性 魔法方法 __init...

  • dom节点获取 设置 删除属性的三种方法

    js 1.HTMLElement类型对象的属性方法获取:div.id div.className img.src设...

  • 对象

    js对象 js对象是j's的基本数据类型, js中的对象是动态的, 可以新增属性,也可以删除属性。 1.获取时间 ...

  • 2019-11-27

    1.js 对象属性 2.js 对象方法 3.对象访问器 4.对象构造器 5.对象构造器加属性 6.对象方法 7.j...

  • OC与JS交互

    ios与js交互,获取webview完整url,title,获取元素并赋值跳转 JS 对象document:属性d...

  • jquery

    1、选择器 选择器 2、样式添加、属性获取 样式与属性 3、js对象和jquery对象转化 js和jquery转化...

网友评论

      本文标题:JS获取对象属性方法

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