程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

JS重点总结(1)

发布于2021-10-05 21:42     阅读(874)     评论(0)     点赞(1)     收藏(5)


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,实现相同功能

  1. <script>
  2. function Person(){
  3. this.name = name,
  4. this.sayName = function()
  5. {
  6. console.log(`我是${this.name}`)
  7. }
  8. }
  9. function myNew(that,...args){
  10. const obj = Object.creat(null)
  11. obj._proto_ = that.prototype
  12. const res = that.call(obj,...args)
  13. return res instanceof Object? res : obj
  14. }
  15. let person = myNew(Person,'小明')
  16. person.sayName(); //
  17. </script>

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

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

v-for中key属性的作用

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

原文链接:https://blog.csdn.net/lucky_ferry/article/details/120603378




所属网站分类: 技术文章 > 博客

作者:天使的翅膀

链接:http://www.qianduanheidong.com/blog/article/198123/3ec8b84070267143d41e/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)