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

实现继承的几种方式

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

xinyan xinyan

创建对象的几种方式

这当然不是一篇关于怎么找对象的文章。 在之前阅读时基本都以摘抄要点为主,那样很难有很深的记忆,而且对于阅读的人不是很友好。因此采取动手实践的方式,在阅读的时候整点小demo,看起来直观也更易于理解。 方式总览 大体有 工厂模式 构造函数模式 原型模式 组合使用构造函数模式 动态原型模式 寄生构造函数 稳妥构造函数模式 几种方式,数 组合使用构造函数模式 最为实用。 工厂模式 const createObject = function () { // 创建一个新的对象作为返回值,在该对象上添加属性和方法 »

xinyan xinyan