javascript
izwell
这个作者很懒,什么都没留下…
展开
-
ESLINT错误提示 no-unused-vars
ESLINT错误提示 no-unused-vars使用ESLINT时遇到如下错误的提示查阅资料得知,是需要使用插件 https://github.com/typescript-eslint/typescript-eslint/issues/941全局按照 eslint-plugin-reactnpm install eslint-plugin-react -g修改eslint的配置项...原创 2019-12-17 17:54:04 · 7831 阅读 · 1 评论 -
JS排序算法
这里简单的总结一下排序算法中的4种1、冒泡排序2、选择排序3、插入排序4、快速排序1 冒泡排序冒泡排序就是循环遍历,两两进行比较排大小function BubleSort(s){ for(let i = 0; i < s.length; i++){ for(let j = i; j < s.length; j++){ s[j] > s[j-1] &am...原创 2019-02-18 22:43:29 · 301 阅读 · 0 评论 -
ES6中的Class不用new就报错的实现
昨天面试的时候,遇到了一个问题,ES6中的class不使用new就会报错,请问你如何用ES5的构造函数实现同样的效果。当时我是一脸懵逼的,面试结束后,自己一直在思考这个问题,仔细想了想new的整个过程function myNew(fn){ let O = Object.create(fn.prototype); let S = fn.apply(O); return typeof ...原创 2019-02-22 11:13:04 · 1297 阅读 · 1 评论 -
arguments转换为数组
使用如下方法即可Array.prototype.slice.call(arguments);[].slice.call(arguments);原创 2019-02-21 17:47:33 · 307 阅读 · 0 评论 -
JS继承--圣杯模式
今天看到一篇文章,讲到了JS中的继承,提及了一个新的概念,圣杯模式。于是查阅了一下资料,看到对于圣杯模式的描述如下:var inherit = ((Origin, Target)=>{ let F= function(){}; return (origin, target)=>{ F.prototype = Origin.prototype; Target.prototy...原创 2019-02-15 16:14:48 · 1531 阅读 · 0 评论 -
JS实现lazyMan
今天看到一个有意思的题目,使用JS实现LazyMan具体效果如下:LazyMan('xx');// Hello xxLazyMan('xx').eat('dinner');//Hello xx// Eat dinner ~~LazyMan('xx').sleep(3000).eat('dinner');//Hello xx//Sleep 3000 ~~~// Eat dinn...原创 2019-01-23 12:05:41 · 531 阅读 · 0 评论 -
JS大数相加
记得之前看到过一个JS超大正整数相加的题目,今天想了下自己会怎么实现,于是便进行了尝试,代码如下:function bigAdd(a, b){ let lenA = a.length, lenB = b.length, curry = 0, res = []; let loopLen = Math.max(lenA, lenB ); for(let...原创 2019-01-07 18:42:41 · 1737 阅读 · 0 评论 -
JS事件循环与宏任务-微任务
其实关于JS的事件循环,自己之前是有部分了解的,但是这个了解还不够详细和深刻。今天看到一个有趣的JS题目,由此引发了自己对于这一块知识的深入学习和梳理。题目如下: setTimeout(function(){ console.log(1); },0) new Promise(function(resolve) { console.log(2); resolv...转载 2018-12-24 17:35:51 · 616 阅读 · 1 评论 -
数组扁平化处理
今天看到一篇文章,其中讲解了数组扁平化处理的多种方法,个人觉得还是有点意思,现详细讲解几种实现的方法。使用forEach function flatten1(arr){ let res = []; arr.forEach((val)=&gt;{ res.push( ...( Array.isArray(val) ? flatten1(val) : [val] )...原创 2018-12-21 16:50:19 · 547 阅读 · 0 评论 -
JS中的模块化
今天看YDKJS时,明白了一个以前一直疑惑的东西,那就是JS中的模块开发,之前也使用过require.s进行模块化的开发,但是一直不能明白其中具体的原理,看了YDKJS的讲解后,真的是豁然开朗,在此记录其中一个实例的代码,并进行解析。 var myModules = (function foo(){ var modules = {}; function get(name){ re...原创 2018-12-14 16:32:49 · 328 阅读 · 0 评论 -
babel的简单使用
1、创建demo目录,在目录下创建package.json文件文件内容如下{ "devDependencies": { "babel-cli": "^6.0.0" } }2、在项目本地安装babelnpm install --save-dev babel-cli同时安装babel-preset-es2015插件npm install --save babel-p...原创 2018-12-07 14:57:51 · 277 阅读 · 0 评论 -
bind的实现
ES6中拥有bind,可以通过ES5中的apply来实现我们知道bind的用法如下funcA.bind(obj,args);返回的是一个函数 Function.prototype.bind = function(context){ let arg = [].slice.apply(arguments,1); let self = this; return function...原创 2019-02-22 12:12:14 · 175 阅读 · 0 评论 -
二叉树系列(1)-实现排序二叉树
排序二叉树就是在一棵普通的数的基础上,一个节点的左节点的值一定小于这个节点的值,右节点的值大于这个节点的值。每棵树都是由节点生成的,每个节点都有左右节点两个属性,用JS来实现如下:function Node(data){ this.data = data; this.left = null; this.right = null;}每棵树都是由根节点构成,且树本身需要一个插入的方法...原创 2019-02-22 14:22:59 · 519 阅读 · 0 评论 -
Functional-Light-JS ---- Recursion
递归递归的定义递归的好处互递归递归的弊端尾调用递归的优化递归的定义 递归就是一个函数在其内部调用它自己,同时有一个条件来终止这个递归的循环调用。递归的好处 递归可以使我们的代码更加的接近声明式的代码,可读性会更加好一些。 The most commonly cited reason that recursion fits the spirit of FP is be...原创 2019-09-05 13:36:22 · 347 阅读 · 0 评论 -
JS中创建任意长度的填充数组
JS中创建任意长度的填充数组常见的创建数组的方式就是使用Array(length);这种方式来创建数组,但这样创建的数组会存在两个问题,一是所生成的数组实际上是一个稀疏数组。而由此所带来的直接问题是,你无法使用map或者forEach方法来对其进行遍历。举个列子var a = new Array(5);//[,,,,]a = a.map((item, index)=>index)...原创 2019-07-17 11:34:30 · 4786 阅读 · 0 评论 -
setMonth的小坑
今天在发现一个我之前写的测试用例出现了错误,最后发现是对Date的setMonth方法使用不够理解,下面进行一下分享。大家都知道setMoth就是设置Date对象的月份信息的,MDN的示列代码如下var event = new Date('August 19, 1975 23:15:30');event.setMonth(3);console.log(event.getMonth()...原创 2019-05-31 15:04:59 · 685 阅读 · 0 评论 -
eslint提示'React' is defined but never used
使用eslint --init进行基础的设置后,在React项目中发现如下报错提示'React' is defined but never used在.eslintrc.js文件中配置如下rule即可"react/jsx-uses-react": 2原创 2019-04-22 16:15:41 · 7923 阅读 · 0 评论 -
使用localStorage进行页面间通信
在h5中,新增了localStorage,对应localStorage的有一个storage事件,这个事件可以用来进行页面间进行通信。页面间通信的列子<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>A</title&a原创 2019-03-11 17:18:13 · 1207 阅读 · 0 评论 -
ES5的函数与ES6的箭头函数的区别
之前被人问过这样一个问题,ES5的函数与ES6中的箭头函数有哪些区别当时想着这么不是很简单么,ES6中的箭头函数是拥有this绑定的,且箭头函数的this绑定是尤其定义时的作用域决定的,且箭头函数的写法更精简。其实这么说也没有问题,但是太肤浅了。查看了阮一峰大神的es6网站,看到有如下描述(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 由于箭头函数使得this...原创 2019-03-07 11:45:52 · 1516 阅读 · 0 评论 -
JS-防抖和节流
在前端的性能优化中,我们经常会听到有一个叫做防抖和节流的技术原创 2019-03-07 10:04:19 · 178 阅读 · 0 评论 -
JS正则test的巨坑
今天和同事问了我一个正则的编写,需求很简单,就是要匹配一个字符串,字符串的最后一部分是一个括号内包含一个数字,如下123(2)写的正则如下:var b =/^[\d\D]*\([1-9]\)$/g;然后我在控制台进行测试,诡异的事情发生了同一个测试字符串,结果却不同,我有点惊讶,在网上百度了一下,才发现是正则表达式中的g引起的之后在MDN搜索到如下内容所以,使用test时,这个g...原创 2019-03-06 16:35:01 · 1686 阅读 · 0 评论 -
JS中的this绑定
JS中的this绑定一共有5种情况,下面一一进行介绍1、默认绑定默认绑定中的this指向undefined或者window,根据环境不同,指向不同。在strict模式下,指向undefined2、隐式绑定隐式绑定简单来说就是谁调用的绑定谁3、显示绑定使用apply、bind、call来进行强制的显示绑定,需要注意bind绑定返回的是一个函数,而apply和call是函数调用,而且ap...原创 2019-02-14 11:57:12 · 397 阅读 · 0 评论 -
babel es6转es5
首先需要安装依赖环境npm i --save-dev babel-cli babel-preset安装es5转换npm i --save-dev babel-preset-es2015安装polyfillnpm i --save-dev babel-polyfill安装运行时转换npm i --save-dev babel-plugin-transform-r...原创 2018-12-14 10:59:42 · 388 阅读 · 0 评论 -
npm i报错Unexpected token
描述:npm i报错Unexpected token < in JSON at position 0 while parsing near ’ <fr…’npm ERR! Unexpected token < in JSON at position 0 while parsing near ’ <fr…’npm ERR! A complete log of this...原创 2018-12-14 10:00:19 · 2485 阅读 · 0 评论 -
剑指offer--变态跳台阶
题目如下:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路:在这道题目之前,其实还有一个简单的青蛙跳台阶,就是青蛙可以跳一次和跳两次,这个其实很简单也没啥好说的,使用递归就可以得到我们想要的结果。我们看看这道题,我一开始的想法也是使用递归,最后发现其实还是那么回事。。。假设 青蛙跳到n级的方法是 F(n)那么F...原创 2018-12-01 11:03:10 · 222 阅读 · 0 评论 -
原型和原型链
原型和原型链核心概念每一个对象都有__proto__属性,只有函数对象有prototype属性函数对象的prototype属性指向的是它的原型对象,函数对象也拥有__proto__属性对象的__proto__属性指向它的构造函数的原型对象,也就是指向构造函数的prototype属性原型对象的constructor属性指向其构造函数以上4点基础概念是我个人认为在理解原型和原...原创 2018-09-12 22:43:52 · 211 阅读 · 0 评论 -
DOM事件总结
之前对DOM事件相关的概念都一直是一知半解,没有进行过系统的梳理,这几天花时间好好查阅了相关资料,在此做一个总结,对DOM事件相关的知识进行一个系统的梳理,方便以后进行回顾。DOM事件类型 大体分为三类 DOM0 | DOM2 | DOM3 DOM0: &amp;amp;lt;div onclick=&amp;quot;test&amp;quot;&amp;amp;gt;&amp;amp;l原创 2018-09-06 16:54:09 · 194 阅读 · 0 评论 -
js提取字符串中的整数
今天在进行一个excel数据处理时,遇到一个如下需求 var s = '总人数123,男人53,女人70'; 需要从s中提取所有的整数,先总结一下方法先将字符串值非数字的部分提换为空字符 var s1 = s.replace(/[^0-9]/ig, ' '); 得到如下结果 " 123 53 70"再使用多个空白符对字符串进行分割 s1.trim().split(/...原创 2018-09-03 22:58:01 · 2511 阅读 · 0 评论 -
JS正则实现数值千分位
今天在看vuex的demo时,看到引用了一个currency脚本文件,通过仔细分析其中的代码,发现其主要作用就是进行数值千分位的处理。现简要梳理一下从这个脚本中学习吸收到的东西。 场景: 进行js中数字的整数部分千分位划分 input:1234.56478 output:1,234.5678 先说说大体的实现思路,先将该数字转换成字符串,获取整数部分,...原创 2018-09-03 18:24:46 · 5796 阅读 · 0 评论 -
事件冒泡、事件捕获和事件委托
事件流 JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用侦听器来预订事件,以便事件发生时执行相应的代码。 事件流的起源:就是在浏览器发展到第四代的时候,浏览器开发团队遇到一个问题:页面的哪一部分会拥有某个特定的事件?要明白这个问题问的是什么,可以想象画在一张纸上的一组同心圆。如果你把手指放在圆心上,那么你的手指指向...转载 2018-08-21 09:38:04 · 168 阅读 · 0 评论 -
sublime 配置eslint
sublime 配置eslint sublime支持eslint检查需要安装如下两个插件,sublimeLinter和sublineLinter-eslintCTRL + SHIFT + P 然后搜索上面的两个插件安装即可之后在preferences->package-settings->SublimeLinter->settings中,添加如下配置//...原创 2018-08-27 16:53:30 · 1105 阅读 · 0 评论 -
mockjs的学习
mcokjs学习 以前制造假数据的时候,都是使用的json文件来模拟的,这样就需要自己需要编写大量的假数据,以及进行接口的更改。后来通过使用mock.js这个脚本库来制造假数据,将代码与数据进行了分离,且假数据可以根据一定规则随机生成,大大提高了开发的效率。mockjs的使用十分简单,其github首页的描述已经十分详细了。具体的语法可以查看官网https://github.com/...原创 2018-08-27 10:56:32 · 432 阅读 · 0 评论 -
reduce方法详解
reduce方法详解reduce(callback,init); 这个init为初始项,如果没有默认为数组的第一项,这个项是可选的 reduce方法会遍历数组,使用回调函数遍历处理数组中的每一项,回调函数每次会返回一个处理后的值,作为下一次回调的第一个参数。function(prev,cur,index,arr);prev:上一次回调的处理结果cur:本次遍历的数组项...原创 2018-08-01 09:23:24 · 2071 阅读 · 0 评论 -
JS中数组方法详解
JS中数组的方法有很多,但是自己一直没有抽时间进行整理分类,故单独写一篇博文,对目前我所掌握的JS中数组相关的方法进行整理,夯实一下自己的基础。我将数组相关的方法分为两类1.方法会改变原数组相应的方法有:shift、unshift、pop、push、reverse、sort、splice shift:将第一个元素删除并且返回删除元素,空即为undefinedunshi...原创 2018-07-30 09:20:34 · 557 阅读 · 0 评论 -
详解JS数据类型转换
数据类型分类基本数据类型 Number | String | Boolean | Null | Undefined | Symbol复合数据类型 Object数据类型转换1. 显示类型转换 Number() | String() | Boolean() 1-1. Number() 基本数据类型 Number(...原创 2018-09-10 20:01:28 · 286 阅读 · 0 评论 -
new操作符的实现原理
new操作符原创 2018-09-18 09:42:28 · 1623 阅读 · 0 评论 -
js中的继承详解
js中的继承假设我们有一个Animal类,我们想构造Cat类,Cat类可以继承Animal类的属性和方法。以这个场景为列,我来讲一讲我所理解的js的继承。构造继承function Animal(name){ this.name = name; this.age = 15;}function Cat(name){ Animal.call(this, name); th...原创 2018-09-18 11:49:59 · 2216 阅读 · 0 评论 -
js创建二维数组小坑
今天在创建一个二维数组时,遇到一个小坑,最后发现是对forEach函数的理解不够深刻导致的bug,特此记录说明。需求如下:创建一个10 x 10的二维数组最常规的想法是,进行遍历循环let item = new Array(10);for( let i = 0 ; i < 10; i++ ){ item[i] = new Array(10);}上面的代码完全可以实现这个...原创 2018-11-26 22:17:25 · 2593 阅读 · 1 评论 -
剑指offer-矩阵中的路径
题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为...原创 2018-11-22 17:28:23 · 218 阅读 · 0 评论 -
JS脚本按顺序依次加载执行
今天同事遇到一个需求,就是需要动态加载的脚本按顺序依次加载执行。尝试了使用document.write(DOMContentLoaded之后不能使用该方法,且该方法不推荐使用),使用defer=“async”(部分浏览器比较古老,不支持该属性)。最后我写了一个方法,实现脚本的按顺序加载,代码如下:function loadScript(){ var scriptArr = Array.pro...原创 2018-11-21 18:07:52 · 1934 阅读 · 0 评论