js类型检测,实例方法,遍历方式,set,Map,weakSet,weakMap简单的介绍

1.JS的类型以及类型检测

js的基本类型有:undefined,null,boolean,string,number

js的引用类型有:Object,Array,Function,Map,Set,Date,以及正则表达式

我们在做类型检测的时候如果是对于基本类型可以用typeof或者===,如果是引用类型可以通过instance of  来检测某某实例是否属于某个引用类型。

2. 实例对象自带的属性和方法

  • constructor 指向用于创建当前对象的构造函数 。(对于上面例子而言,就是Object()
  • hasOwnProperty(propertyName) 用于检查给定属性是否在当前对象实例中
  • isPrototypeOf(Object) 用于检查传入的对象是否是当前对象的原型
  • propertyIsEnumerable(propertyName) 用于检查给定的属性是否能够使用for-in来枚举
  • toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应
  • toString() 返回对象的字符串表示
  • valueOf() 返回对象的字符串、数值、布尔值表示。通常与toString()返回值相同

3.数组和对象的遍历方式

- 数组的遍历方式有forEach,标准的for循环,for...of,以及Map的方式

- 对象的遍历方式有for...in,Object.keys,Object.values,Object.entries

PS:for..in是遍历对象的可枚举属性,包括原型链上的数据,某些时候需要通过hasOwnProperty方法进行过滤一下,而后边提供的一些列Object的方法,无非就是先将object间接的转化为数组,然后在利用数组的遍历,object.keys是将对象的属性名组成一个数组,object.values是将对象的属性值组成一个数组,object.entries是将对象的属性名和属性值转化为键值对的数组。

4. Array,Set,Map,WeakSet,WeakMap的区别以及介绍

- Set和Array的区别在于:

         1.前者是不允许重复的,后者允许重复

         2. 前者是不能通过索引访问的也就是无序的,后者可以通过索引访问也就是有序的

         3.数组适合于有序的、需要频繁读取和修改元素的情况,以及需要保留重复值的场景。

         4. 集合适用于需要存储唯一值的场景,以及需要快速判定特定值是否存在的情况。

- weakSet和Set的区别在于:

         1. weakSet内部是只能存放对象的,一旦存入不属于对象的值,就会报错。        

         2. WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中,这就导致无法确定weakSet里边元素的个数,这也让weakSet被禁止遍历

weakMap和map的区别在于:

         1. WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。

         2. WeakMap的键名所指向的对象(注意只是键名),不计入垃圾回收机制。我们正常写一个数组的时候,如果数组中的元素没有地方引用了,我们想要让他被垃圾回收掉,就需要手动删除这两个元素否则垃圾回收就不会自动释放,而weakMap里边的对象就是消除了这个弊端,一旦该对象不被其他地方所引用就会立即释放掉,因此也没有遍历的方法。

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值