- 博客(17)
- 收藏
- 关注
原创 设计一个数组迭代器
<script> // 设计一个数据的迭代器 Array.prototype.oneach = function (f) { try { this.i || (this.i = 0) if (this.length > 0 && f.constructor == Function) {...
2018-10-15 12:49:30
277
原创 proxy 对象代理
proxy 对象代理 代理模式的实现 代理模式的实现,一般用于,代理拦截,预警,上报,统计,扩展功能 Proxy函数接收两个对象 (target, handler) 被代理对象,,对代理对象的操作1.get 获取某个属性时触发let person = { name: 'CY', age: 108}let obj = new Proxy(pe...
2018-09-07 15:27:57
519
原创 generator 与 async await
generator 函数可用于解决异步的深度嵌套,函数与函数名间加上* 就能成为generator函数,next() 依次执行yield域,return后结束function * show(){ yield 'welcome'; yield 'to'; return 'toilet'}let a = show();console.log(a.next(...
2018-09-07 14:10:00
514
原创 ES6中的类
类的定义一般的定义class Person{ constructor (name, age) { [this.name, this.age] = [name, age]; } // 函数挂载于原型上 showName () { return `my name is ${this.name}`; }}赋值...
2018-09-07 10:06:54
298
原创 es6关于数组的几个函数
关于数组的函数mapmap遍历方法的回调函数里有三个参数,(val, index, all),分别代表值、下标、被循环的数组。let arr = [{title:'new1',read:200,hot:true}, {title:'new2',read:300,hot:true}, {title:'new3',read:400,hot:tru...
2018-09-06 21:13:57
358
原创 Map 和 Set
Map是一种类似于json的数据格式,map的键key可以是任意类型*/let m = new Map()// 添加m.set(123, 'abc').set(234, 'bcd').set(456, 'doh')// 获取m.get(123) // 'abc'// 删除m.delete(456)// 判断是否有keym.has(123) //true// 清空...
2018-09-06 20:29:34
105
原创 关于es2018中正则表达的命名捕获
es6中的命名捕获(?&lt;别名&gt;) 在正则表达式中以这样的形势就能给子表达式取一个别名,以获得更好的代码可读性 现在有一个字符串,’2018-09-06’,我需要分别获取他的年月日,以前的做法就是: let str = '2018-09-06'let reg = /(\d{4})-(\d{2})-(\d{2})/let arr = str.matc...
2018-09-06 19:20:25
347
原创 拖拽功能函数
实现拖拽功能的简单函数 class Drag{ constructor(el){ this.el = document.querySelector(el) this.distance = { x: 0, y: 0 } this.init() ...
2018-09-06 13:50:06
286
原创 深入学习Promise机制
模拟Promise模拟Promise的基础实现,加深对Promise的理解class Promise2{ constructor(fn){ let _this = this this.state = '' this.res_success = null this.res_error = null ...
2018-09-05 20:00:17
178
原创 防抖、节流
在网站的交互过程中,有很多操作会被频繁的触发,这样就给浏览器和服务器带来了不小的负担。节流和防抖就是很好的降低频率的方式节流 将一个函数的执行控制在一定的时间间隔外就是节流,下例将log函数控制再1秒钟内只能触发一次let lastTime = 0function log(){ let nowTime = new Date() if(nowTime - last...
2018-09-05 16:21:07
213
原创 记忆函数
学习了几种提高性能或优雅程度的函数记忆函数1.以一个阶乘的函数为例,这样的函数能缓存计算过的值,并直接返回,可以免去再次计算。let count = 0let cache = {}function factorial(n){ if(cache[n]){ return cache[n] } count++ if(n == 1...
2018-09-05 14:09:59
795
原创 模拟几个函数的实现
在基础知识的学习中要注重深入,模拟一些常用函数的学习便是很好的办法,一下皆是本人学习记录,无关对错模拟bindFunction.prototype.newBind = function (target, ...args){ target = target || window let self = this let temp = function ()...
2018-09-05 13:37:55
228
原创 关于js的对象和数组深拷贝
在js的应用中,对象和数组的拷贝是经常出现的情况,由于其是引用传递,直接赋值,可能导致原始对象或数组被无意的修改浅拷贝 1.浅拷贝只能实现,一层引用的拷贝,如果一个对象中还有对象,那么这个值依然是引用值 function clone(Origin, Target){ let target = Target || {} for(...
2018-08-31 21:24:04
145
原创 关于js利用canvas生成验证码的封装
canvas绘制验证码在几乎每个网站登陆都会使用验证码来防止机器等非人操作,防止数据库被轻而易举的攻破。 验证码一般是PHP或java等生成的图片。在前端,用canva或SVG也可以绘制验证码;以下是用canvas生成验证码的方法 我将该方法简单的封装成了Verify类,只需要传入canvas元素的类名或者id,就能初始化canvashtml结构如下 ...
2018-08-31 13:36:17
598
原创 js继承的回顾
一、js作为面向对象的若数据类型语言,其也是有继承特性的。但是由于js的类本身是函数,这就导致了js继承的特殊性。既然要继承,那么我们就先创建一个父类,这个父类的构造函数里有一个属性和一个方法,原型上也有一个属性和一个方法。 //首先定义一个父类 function Parent(lastName = '建国'){ this.lastName = las...
2018-08-30 20:35:02
106
原创 markdown学习记录
&nbsp; ###一、markdown是一种内写样式结构的轻量级的标记语言 &nbsp; 由于其简单易读,markdown已经成为了网络上受大众喜爱的语言了,各大博客平台均有支持。&nbsp; 但是各大平台支持的语法也不尽相同,我准备从通用语法着手开始学习md。&nbsp; ###二、语法 &nbsp; &gt; md中使用 # 、* 、- 、_ 、() 、[] 、&gt;等标记&
2018-08-30 20:31:47
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人