常用排序算法
封装 ArrayList 类 通过封装 ArrayList,我们可以让所有排序算法作为其原型方法对其内部数组进行统一验证,而不用写多个函数一个个测试。 class ArrayList { constructor() { this.arr = []; } push(value) { this.arr.push(value); } toString() { return this.arr.join(','); } // 把数组的第i项和第j项交换位置 swap(i, j) { this.arr[i] = [this....
解决git 不同branch 下node_moudes不同步的问题
摘要: 在遇到某个依赖重大更新,可能要修改很多代码的时候,你希望在彻底升级成功之前,不搞乱 `node_modules`目录。这时候就要祭出 `git worktree`这个命令。
做nodejs开发,或者vue react等开发的同学,在使用git 做版本管理的时候肯定碰到过这个问题。 按常规做法node_modules 肯定是被添加到.gitignore中不需要被提交的 但是在分支切换的时候就会遇到问题 ,经如你在dev分支下就是升级了某个依赖到最新和版本,这时node_modules下所有的文件被更新,这时你如果切回到master分支,修改一个小错误 ,就会发现,由于node_modules 下的依赖已经是新版本,但是master中还是用的老版本,代码运行就不正常了,所以你不得不npm install一下,记...
JS常用工具函数集合🔧
前言 这些都是网上收集的方法 验证器 传入的值是否是原始值(Primitive) function isPrimitive(value: any): boolean { return ( typeof value === 'string' || typeof value === 'number' || // $flow-disable-line typeof value === 'symbol' || typeof value === 'boolean' ) } 传入的值是否为空 ``...
清除浮动的hack方法
代码实现 .parent { background-color: gray; } .parent::before { display: table; content: ' '; } .parent::after { display: table; content: ' '; clear: both; } .parent .children { float: left; margin-top: 100px; width: 500px; height: ...
ElementUI源码工具函数解析
menu popup after-leave aria-dialog aria-utils clickoutside date-util date dom merge ✔ popper resize-event scroll-into-view ✔ scrollbar-width ✔ shared types ✔ util ✔ vdom vue-popper Types.js 开头先导入了Vue,因为在该模块中需要通过Vue来判断一些状态 `j...
Promise(期约)扩展方法实现
代码实现 前面的章节中我们的PromisePolyfill类实现了Promise(期约)的基本模型,下面介绍一下其静态扩展方法resolve、reject、all、allSettle、race、any的实现。 class PromisePolyfill { constructor(executor) { //... } //该函数一旦执行,将内部的这两个回调函数赋值 then(onFulfilled, onRejected) { //... } //注意这个catch捕获的是最后一个reject ca...
遵循Promises/A+规范实现自定义Promise(期约)
该Promise类实现遵循Promises/A+规范,实现了then、catch、finally的链式调用以及all、allSettled、race、any 静态方法。 实现 class $Promise$ { constructor(executor) { // 初始化状态为pending this.status = 'pending'; // 初始化成功的值为undefined this.value = undefined; // 初始化...
Vue2.6.10源码调试方法
步骤 克隆以下仓库 git@github.com:vuejs/vue.git 修改package.json { "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev --sourcemap" } 完整流程 git clone https://github.com/vuejs/vue.git cd vue npm i 在 dist/vue.js 最后一行追加一行 //# sourceMappingURL=vue.js....
Vue2双向绑定数据模型实现
响应性原理 Vue 使用 Object.defineProperty方法进行响应式数据劫持,利用 set、get 访问器描述符来检测数据的读写。 作为MVVM 框架主要包含两个方面,数据变化更新视图,视图变化更新数据。 在vue中每个组件实例都对应一个渲染 watcher 实例,它会在组件渲染的过程中把“接触”过的响应式数据 property 记录为依赖。之后当依赖项...
JavaScript中new的实现
过程 首先创建了一个新的空对象 设置原型,将对象的原型设置为函数的 prototype 对象。 让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性) 判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。 代码实现 function newPolyfill () { //创建新对象 let newObject = null,flag //拿到构造函数 const constructor = Array.prototype.sh...