Virtual DOM中最小编辑距离的实现

参考文章: 深度剖析:如何实现一个 Virtual DOM 算法 最小编辑距离 实现Virtual DOM一般会经历如下步骤: 使用JavaScript模拟dom树 渲染dom树 比较两颗虚拟dom树的差异 应用上一步中找出的不同 模拟和渲染dom树在参考文章中写得非常清楚,实现起来难度也不大。 本文主要学习第三步 比较两颗虚拟dom树的差异 中用到的列文斯坦(Levenshtein)距离计算算法。 在计算开始之前要先对虚拟dom树做如下处理(图片来自深度剖析:如何实现一个 Virtual DOM 算法) »

xinyan xinyan

通过内存空间探究ES中基本类型和引用类型的异同

栈内存与堆内存 ES中的内存空间 从js垃圾回收机制来认识它的内存空间 结论 内存空间总览 基本类型的内存空间 引用类型的内存空间 当操作引用类型值时内存空间发生了什么变化 在开发过程中我们对基本类型和引用类型的一些特性有所了解: 基本类型是按值访问的,所以我们可以尽情地赋值修改不用担心有副作用; 而引用类型是按引用访问的,所以这会导致当我们操作一个复制自另一个引用类型的值时,使得另一个值也发生变化。 说起来可能有点拗口,又是复制又是赋值的,还有什么按值访问按引用访问,看一下demo: // 声明两个基本类型的变量,simpleVariable2复制自simpleVariable1 let simpleVariable1 = 'simpleVariable1'; let simpleVariable2 = simpleVariable1; »

xinyan xinyan

通过原型链探究ES中数据类型的异同

ES5版本中有6种数据类型,包括5种基本类型和1种复杂类型(引用类型)。本文从原型链的角度去深入学习各项数据类型。 《JavaScript高级程序设计》中包含的这些内容的章节:第三、四、五章 数据类型总览 老生常谈,JavaScript中的5种基本类型: String Number Boolean undefined null 1种复杂类型(引用类型): Object类型 同时ES中也提供了多种原生引用类型,它们在分类上属于引用类型,基于引用类型的原型对象实现。比如: Object Array »

xinyan xinyan

关于BFF层的思考

背景: 1.前端需要处理的业务逻辑越来越多,各种特殊处理,代码越来越dirty 2.服务端设计的API接口,面向通用服务,还是面向UI?后端字段格式多种多样,有的时候想要改个字段非常难 「你自己请求 2 个接口再组装不就行了?」 - 后端同学追求服务下沉和解耦。 「少一次 HTTP 啊,加一个接口有那么难么?」 - 前端同学离用户最近,需要考虑用户体验灵活性。 3.联调耗费大量时间来沟通和扯皮 4. »

实现继承的几种方式

实现继承一般有两种方式:接口继承和实现继承。 因为JavaScript中函数没有签名(什么是函数(方法)签名,为什么JS函数没有签名? ),所以只能以实现继承的方式来完成继承。这一操作主要依靠原型链实现。 在JavaScript中实现继承的方式主要有: 原型链 借用构造函数 组合继承 原型式继承 寄生式继承 寄生组合式继承 这几种。同上文提到的创建对象方式类似,原型链 借用构造函数 组合继承这三种是较为常见的方式,又以 借用构造函数 最为常用。 原型链继承 // 定义超类的属性和方法 »

xinyan xinyan