深入理解JavaScript-对象

    0

创建对象

存在性

判断对象中是否存在某个属性一般来说适用3种方法

  1. in 操作符,缺点是会判断继承过来的属性
  2. hasOwnProterty
  3. 对于Object.create(null)创建的对象需要使用Object.prototype.hasOwnProterty.call(myobje,'a')来判断
  4. Reflect.has(,"toString")
  5. Object.hasOwn()

tips in 操作符检查的是key键 of是值

可枚举

遍历k

  1. for...in

for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。

遍历对象及其原型链上可枚举的属性

  1. Object.key()

  2. 返回对象自身可枚举属性组成的数组

  3. 不会遍历对象原型链上的属性以及 Symbol 属性

  4. 对数组的遍历顺序和 for in 一致

  5. Object.getOwnPropertyNames

----------------------------含原型属性含不可枚举含 Symbol 属性返回值
for...inkey
Object.keys[key...]
Object.getOwnPropertyNames[key...]
Object.getOwnPropertySymbols是(只有 symbol)[key...]
Reflect.ownKeys[key...]
Object.values[value...]
Object.entries[[key,value]...]

map和对象

Map:

  • Map有一个大小的属性,Object没有一个内置的方法去查询他的大小;
  • Map是直接可迭代的,而Object不是;
  • Map在使用方面更具有灵活性,可以使用任何数据类型作为键;
  • Map保留了数据插入的顺序。

Object:

  • 可以完美地使用JSON.parse()和JSON.stringify()去和JSON格式数据去做一个转换;
  • 可以使用 Object.key 直接访问属性的值,不需向Map一样使用get()。
#讨论区
00条评论
实时对话
loading...