今日收获 (前端常见知识点2)

一.JS有几种方法判断变量类型

简单的四种

1.typy of 常用于基本数据类型 用法:type of "John"

2.instance of 判断对象是否是指定的类型(常用于引用数据),数据判断正确返回TRUE,判断不正确返回FALSE,用法 [ ] instance of array

3.Constructor(用于应用数据类型) :获取实例的构造函数判断和某个类是否相同,不会把原型链的其他类带进来,避免原型链的干扰

4.Object.prototype.toString.call() : (所有数据都可以使用)用法:Object.prototype.toString.call(obj) == '[object Array]' 返回该数据类型的字符串。

二.VUE2.0双向绑定原理与缺陷

VUE响应式指的是:组件data变化,会立刻触发视图更新

原理:VUE采用 数据劫持结合发布者--订阅者 的方式来实现数据的响应式,通过Object.defineProperty()来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发响应的监听回调。

Object.defineProperty缺点:

1.一次性递归到底开销很大,如果数据很大,大量的递归导致调用栈溢出

2.不能监听对象的新增属性和删除属性 (需通过Vue.set())

3.无法监听数组变化(下标)

三.数组去重

1.利用对象的Key

遍历数组,每次判断对象中是否存在该属性,不存在就push进新数组,并且把数组元素作为key,设置一个值,存在对象中,最后返回新数组。缺点:占用空间较多。

2.利用set类型数据无重复项

new一个Set,set会自动删除重复项,最后将Set转为数组返回。

优点:效率高,代码简单,缺点:兼容性较差

3.filter+indexOf

利用Array自带filter返回arr.indexOf(num) = index 的 num。

原理:indexof返回最先找到的数字索引,如【1,1】第二个1就会返回索引值为0。

优点:去重时插入到元素的操作,可扩展性强。

4.从头遍历Array,若元素之前出现过,则将其挪到最后,继续遍历,直到处理完所有元素,之后将挪到最后的元素抛弃。

优点:直接操作Array,占用内存少。

四. map、forEach

区别:map有返回值,可以开辟新空间,返回出来一长度和原数组一致的数组,即便数组元素是undefined或null  ; forEach:默认无返回值,返回结果均为undefined,可以通过在函数体内部使用索引修改数组元素。

加分项:map比foreach处理速度更快,而且返回一个新的数组,方便链式调用其他数组新方法,比如filter、reduce

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值