js
文章平均质量分 61
妖怪不慌不张
这个作者很懒,什么都没留下…
展开
-
一文彻底弄懂npm、cnpm、npx、nrm
随着新的域名已经正式启用,老 http://npm.taobao.org 和 http://registry.npm.taobao.org 域名将于 2022 年 05 月 31 日零时起停止服务。即cnpm,这是一个完整 npmjs.org 镜像,即淘宝镜像,你可以用此代替官方版本,同步频率目前为 10分钟。cnpm是个中国版的npm,是淘宝定制的 cnpm 命令行工具代替默认的 npm。有没有一些场景,我们并不想全局安装管理包,即用即删,最适合强迫症的coder,不用担心长期的污染;原创 2022-08-25 16:54:09 · 1307 阅读 · 0 评论 -
js数据结构之集合Set 附力扣算法题
集合一种无序且唯一的数据结构,不能重复,区别于栈、队列、链表ES6中有集合,名为Set集合常用的操作:去重、判断某元素是否在集合中、求交集// 去重const arr = [1,2,2]const arr2 = [...new Set(arr)]// 判断元素是否在集合中const set = new Set(arr)const has = set.has(1) // trueconst has = set.has(4) // false// 求set2与set的交集cons原创 2021-12-13 13:57:43 · 267 阅读 · 2 评论 -
instanceof原理解析
让我们来看下MDN的释意:instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。// 定义构造函数function C(){}function D(){}var o = new C();o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototypeo instanceof D; // false,因为 D.prototype 不在 o 的原型链上o instanc原创 2021-11-03 18:05:51 · 281 阅读 · 0 评论 -
js设计模式之工厂模式
介绍讲new操作单独封装遇到new时,就要考虑是否应该使用工厂模式比如买汉堡:直接点餐、取餐,我们不会亲手做,商店要“封装”做汉堡的工作,做好直接给买者UML类图直接上工厂模式的代码class Product { constructor(name} { this.name = name } init() {console.log('init')} fun1() {console.log('fun1')} fun2() {console.log('fun2')}}// 此处原创 2021-10-04 19:19:00 · 386 阅读 · 0 评论 -
js设计模式之迭代器模式
迭代器模式介绍顺序访问一个集合顺序:如数组、类数组称为顺序,而非对象,能从0,1,2…通过index访问的值使用者无需知道集合的内部结构示例<p>each1</p><p>each2</p><p>each3</p>...<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script><原创 2021-10-02 15:08:12 · 275 阅读 · 0 评论 -
diff算法看不懂就一起来砍我(带图)
前言面试官:"你了解虚拟DOM(Virtual DOM)跟Diff算法吗,请描述一下它们";我:"额,...鹅,那个",完了????,突然智商不在线,没组织好语言没答好或者压根就答不出来;所以这次我总结一下相关的知识点,让你可以有一个清晰的认知之余也会让你在今后遇到这种情况可以坦然自若,应付自如,游刃有余。_________________________________________________相关知识点:虚拟DOM(Virtual DOM):什么是虚拟dom为什么要使转载 2021-09-24 11:53:41 · 409 阅读 · 0 评论 -
我眼中的vue nextTick原理
基本使用this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。<template> <section> <h1 ref="hello">{{ value }}</h1> <el-button type="danger" @click="get">点击&l原创 2021-09-16 14:21:05 · 422 阅读 · 4 评论 -
前端八股文之事件循环js版
JavaScript 是一门单线程语言,可是浏览器又能很好的处理异步请求,这应该如何理解?线程与进程讲到这里不得不提到线程与进程了,我听到小码哥很形象的比喻进程相当于一列火车,这列火车的车厢相当于进程线程是在进程下进行的,单纯的车厢无法运行一个进程可包含多个线程,好比一列火车有多个车厢不同进程之间的数据很难共享,比喻一列火车的乘客很难换到另外一列火车上同一进程下,不同线程间的数据很容易共享,车厢的乘客可以换成到其他车厢进程比线程消耗更多的计算机资源,可以理解多列火车和多个车厢的比较进程之转载 2021-09-09 20:54:33 · 602 阅读 · 0 评论 -
bind、call实现原理
释义bind()方法主要就是将函数绑定到某个对象,bind()会创建一个函数,函数体内的this对象的值会被绑定到传入bind()中的第一个参数的值,剩下的参数以逗号分隔,与call的传参数一样bind用法var person = { name: '妖怪'}function other (age, sex) { console.log(this.name + '的年龄是' + age + ',性别:' + sex)}// 注意bind使用时必用在结尾用()执行,注意与cal原创 2021-09-08 20:29:02 · 270 阅读 · 0 评论 -
js时间复杂度、空间复杂度
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候转载 2021-08-09 19:35:00 · 1866 阅读 · 1 评论 -
Promise 实现源码
转自知乎无名之辈,分析得非常非常好一、基础版本class Promise { callbacks = []; constructor(fn) { fn(this._resolve.bind(this)); } then(onFulfilled) { this.callbacks.push(onFulfilled); } _resolve(value) { this.callbacks.forEach(fn =转载 2021-07-26 19:59:25 · 238 阅读 · 0 评论 -
约瑟夫环js的一种实现方式
约瑟夫环的情景问题100个人分别编号1~100循环报数1、2、3 ,报数3的人排出第100号(报数1)结束后,龙摆尾继续报数2、3直至剩余最后一个人,求最后一个人的编号// sum代表多少个人,score代表报什么数组排除function ring (sum, score) { var numbers = []; for (var i = 1; i <= sum; i++) { numbers.push(i); } va原创 2021-06-09 23:02:39 · 422 阅读 · 0 评论 -
editor.md资源下载
官方推荐下载https://pandao.github.io/editor.md/的下载方式:1、可以通过npm、bower安装2、点击github可直接下载包如果都下载不了,可查找我上传的资源,我不收积分,都是csdn的锅!原创 2020-08-11 13:50:27 · 1126 阅读 · 0 评论 -
js算法(排序)
排序常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。快速排序先从数列中取出一个数作为“基准”。分区过程:将比这个“基准”大的数全放到“基准”的右边,小于或等于“基准”的数全放到“基准”的左边。再对左右区间重复第二步,直到各区间只有一个数。var quickSort = function(arr) { if (arr....原创 2020-01-08 09:57:38 · 128 阅读 · 0 评论 -
vue-cli搭配mockjs模拟可抓到的请求
vue-cli搭配mockjs模拟可抓到的请求书写node服务,并返回mock的数据正确配置vue-cli的proxy正确配置命令行先启动步骤1的服务,再启动vue-cli步骤说明1. 在项目的任意路径创建mockServer.js(名称自定义)文件,书写node服务,并返回mock的数据,该文件的代码如下/*** 请用yarn或npm自行下载安装包* 安装包包括 yarn a...原创 2019-11-06 17:43:31 · 756 阅读 · 0 评论 -
初探 Flow 类型检查(2)
开始使用Flow接上篇若用npm 请参考官网执行命令 https://flow.org/npm init -yyarn add --dev flow-binpackage.json文件中添加flow命令然后执行命令 以下命令之一,新增了.flowconfig的文件npm run flow inityarn run flow init在flow中如果想要为一个数据添加类型...原创 2018-11-29 19:18:05 · 410 阅读 · 0 评论 -
为什么用Object.prototype.toString.call(obj)检测对象类型?
这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的,null 的结果也是 object,Array 的结果也是 object,有时候我们需要的是 “纯粹” 的 object 对象。如何避免呢?比较好的方式是:console.log(Object.prototype.toString.call(obj) === "[object Object]");为什么这样就...转载 2018-12-26 18:32:44 · 293 阅读 · 0 评论 -
js 数组、字符串常用方法
split()split() 方法用于把一个字符串分割成字符串数组。不改变原字符串"2:3:4:5".split(":") //将返回["2", "3", "4", "5"]slice()slice() 方法可从已有的数组中返回选定的元素。不改变原数组var ar原创 2018-12-26 19:13:14 · 204 阅读 · 0 评论 -
js结合AES RSA进行加密
想要了解两种加密算法查询其他资料,这里仅介绍加密流程及js代码流程:随机生成一个字符串(本文用32个字节的16进制字符),记为ramdomStr请求从后端获取一个公钥,此公钥为RSA加密的公钥,记为publicRsaKey用RSA加密算法对ramdomStr用publicRsaKey进行加密,得到新的key记为newKey对ramdomStr进行AES(对称加密)加密,得到key记为c...原创 2019-07-22 10:06:35 · 1889 阅读 · 0 评论 -
js获取父子节点、兄弟节点
一、js获取自节点通过获取dom方式直接获取子节点其中test的父标签id的值,div为标签的名字。getElementsByTagName是一个方法。返回的是一个数组。在访问的时候要按数组的形式访问。var a = document.getElementById("test").getElementsByTagName("div");通过childNodes获取子节点使...转载 2019-08-02 14:34:37 · 3027 阅读 · 0 评论 -
初探 Flow 类型检查(1)
js语言特征介绍js是一种弱类型 动态类型检查的语言弱类型?再定位变量的时候,我们可以为变量赋值任何数据,变量的类型不是固定死的,这样的类型叫弱类型,如var a = 10;var a = function () {}强类型?以java为例,在声明变量的时候,一旦给变量赋值,那么变量的数据类型就已经确定,之后如果要给变量赋值其他类型的数据,需要进行强制数据类型转换int a = ...原创 2018-11-29 19:15:28 · 432 阅读 · 0 评论