自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 防抖debounce和节流throttle实现

防抖多用于用户注册校验用户名重复等操作function debounce(){ let timer = null; return function(){ clearTimeout(timer); timer = setTimeout(()=>{ //do something here console.log('check ok!') },500)...

2018-10-18 15:17:15 255 1

原创 模拟实现bind方法

function fn(a,b,c){ console.log(a) console.log(b) console.log(c)}Function.prototype._bind = function(context,...bindArgs){ let fn = this.name; context[fn] = this; //fn函数 return (...arg) =>...

2018-10-18 15:07:05 315

原创 js计算斐波那切数列

function pibonacci(index) { const init = [1]; function convert(arg) { if (Object.is(Number(arg), NaN)) { return 0 } return Number(arg) } for (let ...

2018-09-15 20:12:52 558

原创 js统计数组中出现次数最多的元素

想来想去没想出更好的解决方法。 思路就是在ana函数里先遍历一遍,维护一个数组newArr 用于将所有数值相同的放在数组中的同一个块内。另外一个数组unique 用于维护数值唯一,判断当前的item是否已存在于newArr中。为了方便比较对象的数组相同,将所有item均转为string类型来比较。 得到的newArr = [[3],[2],[{a:1},{a:1}],[1]]unique...

2018-09-15 18:27:27 6384

原创 正则匹配ip地址,手机号,对象类型

ip地址形如xxx.xxx.xxx.xxx 每个xxx的范围是0-255 1./^((\d{1,2}|1[0-9][0-9]|2[0-5][0-5])\.){3}(\d{1,2}|1[0-9][0-9]|2[0-5][0-5])$/ 2./^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/...

2018-08-21 15:49:24 466

原创 面试题采坑之js作用域提升,原型链

var Foo = function(){ getName = function(){console.log(1)}; return this;}Foo.getName = function(){console.log(2)}Foo.prototype.getName = function(){console.log(3)}var getName = function(){...

2018-08-15 15:47:12 377

转载 POST请求发送2次请求?

是跨域引起的。浏览器发起跨域请求分两种:一种是simple,另一种需要preflight。如果进行preflight了,你就会看到两次请求,一个OPTION,另一个就是你的跨域请求。总的来说就是你的请求浏览器不知道是否被允许,需要发送OPTION请求提前查看下。prefight参见MDN...

2018-05-10 11:04:09 16587

原创 页面文件与浏览器缓存

打开浏览器调试器,当我们首次打开一个页面时,浏览器会从服务器获取页面的html,css,js,image等文件,从调试器的Network选项查看这些资源状态码大都为200. 看看直接请求的html文件的Response-Header 可以看到它的Cache-Control/max-age和Last-Modified信息. 而当我们再次访问该页面时,发现a.html的状态码变成了304...

2018-04-11 11:36:49 332

原创 Webpack打包常用插件

html-webpack-plugin //生成html文件extract-text-webpack-plugin //提取样式到单独的css文件CommonsChunkPlugin //提取公共的JS库 (webpack.optimize.CommonsChunkPlugin)UglifyJsPlugin //压缩混淆插件 webpack.optimize.UglifyJsPlugin

2017-12-22 14:08:54 1550

原创 JS模块加载

在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS 和 AMD

2017-12-11 15:13:59 401

原创 ES6 Class继承中super在不同场景中的用法

super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。class A {}class B extends A { constructor() { super(); }}上面代码中,子类B的构造函数之中的super(),代表调用父

2017-12-11 11:12:26 3896

转载 [转]关于javascript中apply()和call()方法的区别

如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的”偏见”,因为这对您来说绝对是一片新大陆,让JavaScrip好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主要就体现在

2017-12-05 10:38:21 236

原创 JS深度复制deepCopy

在JS里,除Array和Object之外的数据类型的复制可以直接通过等号=来实现,但Array和Object类型的数据通过等号只是起引用作用,指向的是同一块内存地址。当源数据改变,引用的数据也同时会发生变化。因此若要复制这两类数据类型就必须对它们里边的每一个元素都逐个进行复制,可以通过迭代实现。let util = ( ()=> { // 获取数据类型 let getType=(obj

2017-12-04 15:47:48 5411

原创 console.log()中的%d,%s等代表的输出类型

在console.log()或console.debug()中输出时会有%d,%s等符号。%s for a String value 字符类型%d or %i for a Integer value 整型%f for a Floating point number 浮点类型number%o for an Object hyperlink 对象类型超链接var name = 'Chr

2017-12-04 11:08:27 6102

原创 JavaScript 遍历方法

JS的Array遍历方法包含map(),forEach(),reduce()等。1.reduce遍历MDN对reduce的解释:reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。var total = [0, 1, 2, 3].reduce(function(sum, value) { return sum + value;}, 0);// tota

2017-11-30 10:31:50 293 1

原创 ES6 Proxy杂记

Proxy本质是一个构造函数,用于创建一个对象。在创建这个对象的同时可以对该对象设置拦截器(或代理器)。var proxy = new Proxy(target, handler);target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。var proxy = new Proxy({}, { get: function(target, property) {

2017-11-29 14:45:02 197

原创 ES6 Generator函数杂记

Generator函数执行后返回一个遍历器对象,该遍历器对象拥有Symbol.iterator属性,执行该属性得到的是该遍历器本身。function* gen(){ // some code}var g = gen();g[Symbol.iterator]() === g// trueGenerator函数只会通过实例调用next()方法返回yield后的数据并通过{ value:xxx,

2017-11-28 16:23:37 128

转载 [转]JavaScript中的普通函数与构造函数

JavaScript中的普通函数与构造函数 问题 什么是构造函数? 构造函数与普通函数区别是什么? 用new关键字的时候到底做了什么? 构造函数有返回值怎么办? 构造函数能当普通函数调用吗?以下是我的一些理解,理解错误的地方恳请大家帮忙指正,谢谢!this this永远指向当前正在被执行的函数或方法的owner。例如:function test(){ console.log(

2017-11-24 13:57:18 139

原创 ES6中Set和Map数据结构的基本概念及应用

1. Set数据结构介绍的特点ES6中提供了新的数据结构Set和Map。Set类似于Array,但内部存储的数据不允许重复。该方法可接受具有Iterable接口的其他数据结构作为参数。例如:let set=new Set([1,2,3,3]);console.log(set);// Set(3) {1, 2, 3}由此我们生成了一个Set结构的数据。但需要注意,虽然NaN===NaN不成立,但S

2017-11-24 11:15:46 618

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除