TypeScript 源码 不使用 Pick ,实现 TS 内置的 Pick 的功能。 从类型 T 中选出符合 K 的属性,构造一个新的类型。 例如: `ts interface Todo { title: string description: string completed: boolean } type TodoPreview = MyPick const todo: TodoP34 秒前更新
K-means 一种广泛使用的无监督学习算法,主要用于将数据集分成若干个簇(cluster)。它的目标是通过最小化簇内数据点的差异,使得相似的对象被分到同一个簇中,而不同簇的对象尽可能不相似。 以简单的二维数据为例,如下: `txt 有数据 1 2 3 6 7 8 10 11 12 step1:我们通过肉眼观察确定簇的个数(K),为3 step2:随机取K个点为中心点 1 2 3 1 天前更新
Vue 响应式 本文将从 0 开始搭建 Vue 的响应式系统,实现 ref,effect,computed,watch 等 需要解决的问题: 1. 实现 ref 的 getter 与 setter 2. 实现订阅 ref 中的值,并执行 effect 中的函数 3. 当有多个 effect 订阅事件时,使用双向链表保存事件 4. 当有嵌套的 effect 订阅事件时,正常运行 5. 当有多个 ref 5 天前更新
二进制 原理说明: - 一个整数的二进制最低位(也就是最后一位) 表示这个数是奇数还是偶数 - 二进制中: - 如果最后一位是 0 ,说明这个数是偶数 - 如果最后一位是 1 ,说明这个数是奇数 举例: | 十进制数 | 二进制表示 | 最低位 | 奇偶性 | | -------- | ---------- | ------ | ------ | | 4 | 100 8 天前更新
动画 import MyUnderline from './components/MyUnderline.vue' 下划线动画: <<< ./components/MyUnderline.vue 8 天前更新
Array源码 完整的结构是 Array.prototype.map(callbackfn[, thisArg]),map 函数接收两个参数,一个是必填项回调函数,另一个是可选项 callbackfn 函数执行时的 this 值。 map 方法的主要功能就是把原数组中的每个元素按顺序执行一次 callbackfn 函数,并且把所有返回的结果组合在一起生成一个新的数组,map 方法的返回值就是这个新数组。8 天前更新
基本数据类型和应用类型 本系列是我个人整理的JavaScript深入系列。 变量存储类型分两类 1. 基本类型:直接存储在栈中的数据。(字符串、布尔值、数字、undefined、null) 2. 引用类型:将该对象引用地址存储在栈中,然后对象里面的数据存放在堆中。(数组、对象、Date、RegExp、函数、特殊的基本包装类型以及单体内置对象) 特殊的基本包装类型(String、Number、Boolean)14 天前更新
深拷贝 本文将从最基础的深拷贝方法到更复杂的方法,深入讲解深拷贝的原理,以及各方法之间的差异。 在不使用第三方库的情况下,想要深拷贝一个对象,一般来讲最简单的用的最多的就是 JSON.parse(JSON.stringify(obj)),其过程说白了就是利用 JSON.stringify 将 JS 对象序列化(JSON字符串),再使用 JSON.parse 来反序列化(还原) JS 对象。 `14 天前更新
原型到原型链 JavaScript 是动态的,本身不提供一个 class 的实现。即便是在 ES2015/ES6 中引入了 class 关键字,但那也只是语法糖,JavaScript 仍然是基于原型的。 当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 __proto__)指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己15 天前更新