首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JS基础(

JS与DOM的关系 浏览器有渲染html代码的功能,把html源码(如div,p标签等)在内存里形成一个DOM对象 文档对象模型DOM(Document Object Model)定义访问和处理HTML...BOM对象(把浏览器的地址栏,历史记录,DOM等装在一个对象) 浏览器内部有JS解释器/引擎;在html里的JS代码会被引擎所执行,执行的结果是对DOM对象的操作(即是对节点树内的标签进行操作) JS添加特效...: 无非就是用JS操作DOM对象而已 JS的引入方式 JS代码可在html中任意位置编写,但浏览器解析代码是从上到下的,需注意此时html是否已经解析该标签,能让JS能否获取该DOM对象,所以有时会把代码放到...中数组的数字键值只能从0开始递增 注意 : 数组中括号,JS中length ; 对象用大括号 ?...Js的内置对象的使用 ? ? window对象 window对象和JS没关系;是浏览的一个数组对象,供JS来操作。

4.1K140

Vue源码之虚拟DOM和diff算法(二) 手写diff算法

需要进行精细化比对,最小化更新 patchVnode(oldVnode, newVnode) if (oldVnode === newVnode) { // oldVnode和newVnode是内存的同一对象...最复杂的情况') } else { // newVnode的内容是子节点,而oldVnode的内容是text:需要清空oldVnode,然后再把newVnode的children添加DOM...,继续向下尝试命中 新后旧后: 命中,新后指针、旧后指针,回到1,继续看有没有命中 未命中,继续向下尝试命中 新后旧前: 命中,移动旧前指针指向的节点到旧后指针的后面,并将原位置设置为 undefined...,旧前指针下移,新后指针 未命中,继续向下尝试命中 新前旧后: 命中,移动旧后指针指向的节点到旧前指针的前面,并将原位置设置为 undefined,旧后指针,新前指针下移 未命中 在旧节点中寻找相同...,新增 新前指针指向的节点,将该节点追加到 旧前指针之前, 新前指针下移一位 不存在 新增并将该节点追加到 旧前指针之前, 新前指针下移一位 循环结束 新节点先循环完毕:删除旧前指针、旧后指针之间的节点

53420

调度队列的优先堆实现应用场景模拟应用分析代码实现

Delete:对应删除任务,按标号取出某一节点的任务并调整堆使其满足2D优先堆的条件,调用下移方法 Change:对应修改任务优先级,根据调整的情况调用上下移方法。...以上提到了两种另外需要实现的方法: 方法:将某一节点向上移动,使其满足2D优先堆的限制 下移方法:将某一节点向下移动,使其满足2D优先堆的限制 方法 ?...up.png 如图所示为一个方法,当某位置要插入一个比原先优先值小的任务时,可以调用上方法使插入不破坏2d优先堆的性质,该方法的递归概括有以下几步,输入为待插入位置和待插入数据: 边缘判断:若该节点为根节点...temp.heap[i] = NewWork(0, 999, "") } temp.next = 1 temp.size = 17 return temp } 方法...方法主要用于数据插入和权值修改 func (w *WorkFIFO) UpFlow(data *Work, place int) error { if place > w.next ||

799100

【化解数据结构】详解堆结构,并实现最小堆结构

JS 中通过数组来实现一个堆结构,其实本质就是一个数组。...交换两个数 getParentIndex(i) 获取 i 的父节点 getLeftIndex(i) 获取 i 的左子节点 getRightIndex(i) 获取 i 的右子节点 shirtUp(i) 操作...(因为最小堆,小的在堆顶) 直至递归结束 shirtUp(index) { // 如果在堆顶,停止 if(index == 0) return // 获取父元素 const...实现 insert方法 在写好了 shirtUp 方法,我们就可以实现 insert 方法来看看我们实现的效果了 insert 方法的作用是插入一个元素,在堆中插入一个元素之后,我们需要通过 shirtUp...,最小堆,小的要在最上面 shirtUp(index) { // 如果在堆顶,停止 if (index == 0) return const

48710

【化解数据结构】详解堆结构,并实现最小堆结构

JS 中通过数组来实现一个堆结构,其实本质就是一个数组。...交换两个数 getParentIndex(i) 获取 i 的父节点 getLeftIndex(i) 获取 i 的左子节点 getRightIndex(i) 获取 i 的右子节点 shirtUp(i) 操作...(因为最小堆,小的在堆顶) 直至递归结束 shirtUp(index) { // 如果在堆顶,停止 if(index == 0) return // 获取父元素 const...实现 insert方法 在写好了 shirtUp 方法,我们就可以实现 insert 方法来看看我们实现的效果了 insert 方法的作用是插入一个元素,在堆中插入一个元素之后,我们需要通过 shirtUp...,最小堆,小的要在最上面 shirtUp(index) { // 如果在堆顶,停止 if (index == 0) return const

57130

PriorityQueue 源码分析

堆的维护很简单,只有两个操作,如果某个节点值大于父节点,就是,小于子节点就下移,下面两幅图分别展示了下移的操作。...下移   如图a中深色节点i(4)它比两个子节点都小,明显破坏了堆的性质,这个时候就需要对其下移,图b中与14交换了位置(与7交换也行),依旧不满足堆性质,再下移,结果见图c。...   如上图a,节点i(15)比其父节点还大,所以对其移到图b的状态,依旧比父节点大,再上。 初始化 对不满足堆性质的节点通过上或者下移操作,最终可以保证满足堆的性质。...所以建堆的过程就对数组中每个元素做堆性质的维护,一般实现是从后往前,对不满足性质的节点做下移。 插入 插入很简单了,每次插入都插到最后一个节点,可能会破会堆性质,然后上更新就行了。...这个时候有可能用覆盖后的节点比子节点小,所以需要下移。 也有可能该节点比父节点大,需要。 取最大堆的最大值 按最大堆的性质,根节点是最大的,取完后按删除的方法删掉跟节点就行了。

53620

Windows 安装 Node.js

双击下载后的安装包 v0.10.26,如下所示: 步骤 2 : 点击以上的Run(运行),将出现如下界面: 步骤 3 : 勾选接受协议选项,点击 next(下一步) 按钮 : 步骤 4 : Node.js...你可以修改目录,并点击 next(下一步): 步骤 5 : 点击树形图标来选择你需要的安装模式 , 然后点击下一步 next(下一步) 步骤 6 :点击 Install(安装) 开始安装Node.js...检测PATH环境变量是否配置了Node.js,点击开始=》运行=》输入"cmd" => 输入命令"path",输出如下结果: PATH=C:\oraclexe\app\oracle\product\10.2.0...Program Files\nodejs\; C:\Users\rg\AppData\Roaming\npm 我们可以看到环境变量中已经包含了C:\Program Files\nodejs\ 检查Node.js...Node.exe ,将出现如下界面 : 点击 Run(运行)按钮将出现命令行窗口: 版本测试 进入 node.exe 所在的目录,如下所示: 如果你获得以上输出结果,说明你已经成功安装了Node.js

72330
领券