{ JavaScript }

  • JS中的call、apply、bind

    |

    在JavaScript中,call、apply和bind 是Function对象自带的三个方法,这三个方法的共同点:

    1. 都是用来改变函数的this对象的指向的。
    2. 第一个参数都是this要指向的对象。
    3. 都可以利用后续参数传参。
  • 简单实现 jQuery 中的几个 API

    |

    背景

    对于操作 DOM 来说,jQuery 是非常方便的一个库,虽然如今随着 React, Vue 之类框架的流行,jQuery 用得越来越少了,但是其中很多思想还是非常值得我们学习的,这篇文章将介绍如何实现 jQuery 中的几个 api 。

  • JavaScript常见原生DOM操作API总结

    |

    基本概念

    DOM

    DOM全称是Document Object Model(文档对象模型),是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。

    DOM 只是一个接口规范,可以用各种语言实现。所以严格地说,DOM 不是 JavaScript 语法的一部分,但是 DOM 操作是 JavaScript 最常见的任务,离开了 DOM,JavaScript 就无法控制网页。

  • HTML5 Canvas 基础

    | /

    <canvas> 是HTML5新增的元素,可以用于绘制图形,制作照片,创建动画。<canvas> 标签只是图形容器,它没有自己的行为,必须使用脚本来绘制图形。

    创建一个canvas

    1
    <canvas id="mycanvas" width="300" height="300"></canvas>
  • 堆排序解析及JavaScript实现

    | /

    什么是堆

    在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”和“右子树”。二叉树的分支具有左右次序,不能颠倒。

    二叉树的每个结点至多只有二棵子树(不存在度大于 2 的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第 i 层至多有 2i - 1 个结点;深度为 k 的二叉树至多有 2k - 1 个结点;对任何一棵二叉树 T,如果其终端结点数为 n0,度为 2 的结点数为 n2,则n0 = n2 + 1

  • 计数排序解析及JavaScript实现

    | /

    计数排序

    计数排序(Counting sort)是一种稳定的线性时间排序算法。

    计数排序使用一个额外的数组}C ,其中第i个元素是待排序数组 A 中值等于 i 的元素的个数。然后根据数组 C 来将 A 中的元素排到正确的位置。当输入的元素是 n0k 之间的整数时,它的运行时间是 Θ(n+k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。

  • JS函数节流(throttle)与函数去抖(debounce)

    | /

    背景

    在浏览器 DOM 事件里面,有一些事件会随着用户的操作不间断触发。如:改变窗口大小(resize)、鼠标滚动(scroll)、鼠标移动(mousemove),如果把逻辑函数直接绑定到这些事件上,会严重影响性能,再比如把ajax请求直接绑定到keydown事件上,将在用户输入时产生频率很高的ajax请求,给服务器造成不必要的响应压力。