起风了

“路海长 青夜旷 越过群山追斜阳”

使用Jest测试JavaScript (入门篇)

Jest
1 什么是 Jest? Jest Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架。并且它对同样是 Facebook 的开源前端框架 React 的测试十分友好。 2 安装Jest 2.1 初始化package.json 在shell中输入以下命令,初...

使用模拟实现的方式探究call 和 apply 的原理

使用模拟实现的方式探究call 和 apply 的原理缩略图
使用模拟实现的方式探究call 和 apply 的原理 call 作用: call() 方法就是在使用一个指定 this 值和若干个指定的参数值的前提下调用某个函数或者方法。 var foo = { value : 1}function bar() { console.log(this.value)}// 如果不对this进行绑定执行bar() 会返回undefinedbar.call(foo) // 1 也就是...

从ES6重新认识JavaScript设计模式(二): 工厂模式

从ES6重新认识JavaScript设计模式(二): 工厂模式缩略图
factory.png 1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不同可以分为:简单工厂,工厂方法和抽象工厂。 如果只接触过JavaScript这门语言的的人可能会对...

setTimeout函数之循环和闭包

setTimeout函数之循环和闭包 前言 之前对于setTimeout的一个经典问题的理解总是感到很迷惑,现在好像清晰一点了,所以把我的理解写下来,我对js的理解也不深入,如果有错误,请务必指出。以免误导其他看到这篇文章的小白。-. 先来点开胃菜 先看看这种很常见的问题吧: for (var i = 1; i <= 5; i++) { s...

Mongoose 基本操作

Mongoose 基本操作缩略图
前提 安装Node 新建一个单独的目录安装MongoDB并开启服务 新建项目目录,npm init初始化并安装mongoose包npm i mongoose -S 建议npm i -g supervisor安装supervisor,用于监听当前目录下 node 和 js 后缀的文件,当这些文件发生改动时,supervisor 会自动重启程序。 运行mongo连接数据库 核心 名词解释 Sc...

call、apply和bind方法的用法以及区别

call、apply和bind方法的用法以及区别缩略图
call、apply、bind的作用是改变函数运行时this的指向,所以先说清楚this。 以下是函数的调用方法: 方法调用模式: 当一个函数被保存为对象的一个方法时,如果调用表达式包含一个提取属性的动作,那么它就是被当做一个方法来调用,此时的this被绑定到这个对象。 var a = 1 var obj1 = { a:2, ...

正则捕获组

正则捕获组缩略图
分组类型 有四种分组类型 捕获型() 非捕获型(?:) 正向前瞻型(?=) 反向前瞻型(?!) 捕获型 分组下面的正则表达式匹配dotdotdot /dotdotdot/ 更优雅的写法是将其分组,由一对圆括号包裹的小整体称为分组 /(dot){3}/ 候选一个分组中可以有多个候选表达式,用|分隔,|意为“或” var reg = /I love (apple|oran...

洗牌算法:数组随机排序

洗牌算法:数组随机排序缩略图
最近做音乐播放器,基本功能已实现,准备再写一个循环播放功能,其中涉及列表循环、单曲循环、随机循环。实现这几个功能本质上就是维护一个列表,而列表可视为一个数组,要实现曲目随机循环,也就是实现数组项的随机重排。本文仅讨论实现随机循环的准备工作——即数组随机排序。 概念洗牌算法是一个形象术语...

JS基础知识

JS基础知识缩略图
问答 1、CSS和JS在网页中的放置顺序是怎样的? 一般来说css 放在Head标签里;Js放在body标签里最后面。 css放在前端加载时因为页面渲染时首先是根据DOM结构生成一个DOM树,然后加上CSS样式生成一个渲染书,如果CSS放在后面可能页面会出现闪的感觉,或者是白屏,或者布局混乱样式很丑直到CSS加载完成。 JS会阻...

JS之函数

JS之函数缩略图
问答题 1. 函数声明和函数表达式有什么区别 1.函数声明必须有标识符,也就是常说的函数名;函数表达式可以省略函数名。 函数声明(要带标识符) function functionName(arg1, arg2, ...){ <!-- function body --> } 函数表达式 省略标识符: var variable=function(arg1, arg2, ...){ <...