JS重点总结(1)

dom模型,事件委托的优缺点

事件委托就是:利用冒泡的原理,把事件添加到父元素上,委托它们父级代为执行事件

优点:提高性能,减少内存,对于新添加的元素也会有之前的事件

缺点:

1. 事件委托基于冒泡,不冒泡的事件不支持
2.层级过多,冒泡过程中可能被中间层阻止
3.如果把所有事件都用事件委托,可能会出现事件误判,即不该触发事件的被绑定了

0.1+0.2 = 0.3?

0.1+0.2 = 0.30000000000000004

首先浮点值的精确度最高可达17位小数

两数相加时,会将两束转换成二进制数,0.1和0.2转为二进制时尾数会发送无限循环,JS引擎对二进制进行截取,会造成精度的丢失。

Number整型的最大存储空间?

JavaScirpt 使用 Number 类型来表示数字(整数或浮点数),遵循 IEEE 754 标准,通过 64 位来表示一个数字(1 + 11 + 52)

  • 1----表示符号位 0是正数,1是负数
  • 11 ----指数位
  • 52 -----尾数,小数部分(有效数字)

其实这都是因为浮点数运算的精度问题。

简单来说,因为计算机只认识二进制,在进行运算时,需要将其他进制的数值转换成二进制,然后再进行计算。

浮点数用二进制表达时是无穷的。IEEE 754 标准的 64 位双精度浮点数的小数部分最多支持53位二进制位,所以两者相加后,因浮点数小数位的限制而截断的二进制数字,再转换为十进制,就成了 0.30000000000000004,所以在进行算术计算时会产生误差。

手写一个new,实现相同功能

<script>
function Person(){
    this.name = name,
    this.sayName = function()
        {
    console.log(`我是${this.name}`)
            }
}

function myNew(that,...args){
    const obj = Object.creat(null)
    obj._proto_ = that.prototype
    const res = that.call(obj,...args)
    return res instanceof Object? res : obj

}
let person = myNew(Person,'小明')
person.sayName();   // 
</script>

new在创建实例对象中过程: 

  1. 创建一个新对象
  2. 将新对象的_proto_指向构造函数的prototype对象
  3. 将构造函数的作用域赋值给新对象 (也就是this指向新对象)
  4. 执行构造函数中的代码(为这个新对象添加属性)
  5. 返回新的对象

v-for中key属性的作用

key的作用主要是为了更高效的对比虚拟dom中的某个节点是不是相同节点,是用来提高diff算法的性能表现。更具体一点,vue在patch过程(执行diff的算法,可翻译为打补丁算法)中判断两个节点是否是相同节点,key值相同是一个必要条件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值