20170614-数组去重

2017-06-13
阅读 3 分钟
1.3k
测试用例 {代码...} indexOf {代码...} NaN丢失 {代码...} NaN重复 indexOf认为NaN与NaN是不重复的 includes {代码...} includes认为NaN和NaN是重复的 === {代码...} NaN重复 使用对象实现数组去重及改进 {代码...} 无法区分隐式类型转换成字符串后一样的值,比如1和'1' 无法处理复杂数据类型,比如对象(因为对象作为ke...

20170613-原生拖放

2017-06-13
阅读 3 分钟
1.9k
重点知识 拖放事件 拖动某元素时,会在被拖动元素上以此触发下列事件: dragstart:当拖拽元素开始被拖拽的时候触发的事件 drag:当拖拽元素的过程中一直触发的事件 dragend:当拖拽完成后触发的事件 当某个元素被拖放到一个有效的放置目标上时,放置目标上回依次触发下列事件: dragenter:当拖曳元素进入目标元素的时候触...

20170612-点滴记录

2017-06-12
阅读 1 分钟
1.1k
这个函数会接受两个参数,第一个参数是当前的state值,第二个是当前的props,这个函数返回一个对象,这个对象代表想要对this.state的更改。

20170612-Event Loop

2017-06-12
阅读 1 分钟
1.4k
所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务...

20170611-事件

2017-06-11
阅读 3 分钟
1.3k
JavaScript与HTML之间的交互是通过事件实现的,事件,就是文档或者浏览器窗口中发生的一些特定的交互瞬间。可以使用监听器(或者处理程序)来预定事件,以便事件发生时执行相应的代码。

20170610-async、await与Promise

2017-06-10
阅读 4 分钟
3.3k
async和await async/await是一种编写异步代码的新方法,之前编写异步代码的方案是回调和promise async/await实际上是建立在promise的基础上,它不能与普通回调或者node回调一起用 async/await像promise一样,也是非阻塞的 async/await让异步代码看起来、表现起来更像同步代码,这正是其威力所在 语法(对比promise) 假设...

20170609-DOM相关属性和方法

2017-06-09
阅读 2 分钟
1.3k
Element: 父子元素节点属性: childElementCount:返回子元素节点的个数 children:返回当前元素的子元素节点的集合 firstElementChild:返回第一个子元素节点 lastElementChild:返回最后一个子元素节点 nextElementSibling:返回同级的下一个元素节点 previousElementSibling:返回同级的前一个元素节点 parentElement:返回...

20170609-DOM总结

2017-06-09
阅读 7 分钟
2k
文档节点(Document node)是每个文档的根节点(在浏览器中对应的是document),在这个例子中,文档节点有两个子节点,一个是<!DOCTYPE html>(DocumentTyep类型),另一个是<html>(Element类型)。文档元素是文档最外层的元素,文档中的其他所有元素都是包含在文档元素中。每个文档只能有一个文档元素,在HTML页面...

20170608-BOM

2017-06-08
阅读 1 分钟
1.2k
BOM浏览器对象模型 window window.innerWidth,window.innerHeight:页面视图容器的大小 window.outerWidth,window.outerHeight: 浏览器窗口本身的尺寸 window.open():可以导航到一个特定的URL,也可以打开一个新的浏览器窗口 setTimeout和setInterval 系统对话框: alert() confirm():会返回一个布尔值 prompt() locatio...

Webpack 2 中一些常见的优化措施

2017-06-08
阅读 1 分钟
2k
在开发环境下, 通常会采取 HMR 模式来提高开发效率. 但一般情况下, 我们只会更改自身的业务文件, 不会去更改第三方的依赖, 但 webpack 在 rebuild 的时候, 依旧会 build 所有的依赖. 因而, 为减少 rebuild 的时间, 我们可以分离第三方依赖, 在项目启动之前, 将其单独打包和引入.

20170607-私有变量

2017-06-07
阅读 3 分钟
1.4k
任何在函数中定义的变量,都可以认为是私有变量,因为在不能再函数的外部访问这些变量。私有变量包括函数的参数、函数中定义的变量和函数。我们把有权访问私有变量和私有函数的公有方法称为特权方法。

20170607-面向对象03-判断对象类型的方法

2017-06-07
阅读 3 分钟
1.8k
使用constructor属性来判断对象类型(结合上面最后的方法)的优点是:无论如何修改构造函数的原型对象,之前创建的对象的constructor属性一定指向构造函数,因此一定可以判断出他们的类型

20170607-面向对象02-继承

2017-06-07
阅读 6 分钟
1.2k
注意 :==instance.constructor现在指向的是SuperType,这是因为原来SubType的原型指向了另一个对象--SuperType的原型,而这个原型对象的constructor属性指向的是SuperType==

20170607-面向对象01-创建对象

2017-06-07
阅读 6 分钟
1.5k
前面提到了早期创建对象的两种方法:Object构造函数和对象字面量,但是这些方式有明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。

20170606-浅拷贝与深拷贝

2017-06-06
阅读 3 分钟
1.7k
深拷贝:会在内存中开辟一块新的内存空间,它不仅将原对象的各个属性逐个复制过去,而且将原对象各个属性所包含的内容也依次采用深复制的方法递归复制到新的内存空间中,并把新的内存空间的地址复制给第二个变量,这两个变量指向的是不同的对象,两个变量的任何操作都不会影响到对方

20170606-跨浏览器的事件处理程序

2017-06-06
阅读 1 分钟
1.4k
跨浏览器的事件处理程序 注意两点: 视情况分别使用DOM0级方法、DOM2级方法或者IE方法来添加事件 老版本浏览器不支持事件捕获,并且很少有机会使用事件捕获,因此可以只关注事件冒泡 {代码...}

20170605-函数的arguments

2017-06-05
阅读 1 分钟
1.2k
arguments是一个类数组对象,包含着传入函数中的所有参数。虽然arguments的主要用途是保存函数参数,但是这个对象还有一个名叫callee的属性,该属性是一个指针,指明拥有这个arguments对象的函数。

20170605-正则表达式相关

2017-06-05
阅读 2 分钟
1.2k
var expression = / pattern / flags:模式(pattern)部分可以是任何简单或复杂的正则表达式,标志(flag)部分用来标明正则表达式的匹配模式

20170605-String相关方法

2017-06-05
阅读 2 分钟
1.2k
我们知道,基本数据类型有:Udefined Null Boolean Number String,还有一种复杂数据类型Object.基本类型不是对象,从逻辑上讲,是不应该有方法的.其实,为了让我们能够对String进行相关操作,后台已经自动完成了一系列的处理.当第二行代码访问s1时,访问过程处于一种读取模式,也就是从内存中读取这个字符串的值.而在读取模式中...

20170605-Array相关方法

2017-06-05
阅读 4 分钟
1.1k
创建数组 var array = new Array(); var array = new Array(10); var array = new Array("red","blue","green"); var array = []; var array = [1,2,3,4,5,6]; 检测数组 确定某个对象是否是数组: value instanceof Array Array.isArray(value) 转换方法:toString() valueOf() toLocaleString toString 方法返回一个字...

20170605-内存泄漏和垃圾回收

2017-06-05
阅读 3 分钟
1.9k
由于字符串、对象和数组没有固定大小,所以当他们的大小已知时,才能对他们进行动态的存储分配。JavaScript程序每次创建字符串、数组或对象时,解释器都必须分配内存来存储那个实体。只要像这样动态地分配了内存,最终都要释放这些内存以便他们能够被再用,否则,JavaScript的解释器将会消耗完系统中所有可用的内存,造...

React中的小知识点

2017-06-03
阅读 2 分钟
2.4k
React.js并不能完全满足所有DOM操作需求,有些时候还是需要和DOM打交道。比如进入页面后自动focus到某个输入框,这是需要调用input.focus()的DOM API。React当中提供了ref属性来帮助我们获取 已经挂载元素 的DOM节点。具体的使用方法如下:

20170601-BFC(块级格式化上下文)

2017-06-01
阅读 2 分钟
2.2k
BFC的全称是Block Format Content -- 块级格式化上下文。浮动、绝对定位的元素(absolute、fixed定位)、块容器(display属性为inline-block、table、table-cell、table、table-caption)、带有overflow属性(该属性值不为visible和inherit)的display为block的块级元素会在其内部建立新的块级格式化上下文。

五月末--我的第一个"SPA"项目完成

2017-06-01
阅读 1 分钟
1.8k
这段时间一直在学习React相关内容,最近我用react相关技术实现了一个最经典的React项目--Todo应用。我尽我最大的努力实现了我想到的功能,尽管还有些小瑕疵。这是我的Github项目地址: [链接] 欢迎issue,star or follow!我会继续开源更多有趣的项目

20170526-闭包

2017-05-26
阅读 1 分钟
1.4k
当调用一个函数A时,会创建这个函数的执行环境和对应的作用域链,当函数A调用结束时,会将执行环境和作用域链销毁(在内存中)。如果这个函数A返回了一个新的函数或者对象B,其中引用了函数A的变量,那么函数A的执行环境和作用域不会被销毁,因为返回的这个函数(或对象)B在其他执行环境中被调用时,仍然会访问之前函数A中...

20170524-三次握手与四次挥手

2017-05-25
阅读 2 分钟
2.4k
TCP的连接建立过程 各种标志含义 SYN - 创建一个连接/同步标志 FIN - 终结一个连接 ACK - 确认接收到的数据 ack - 确认号 seq - 报文段序号 连接建立过程 1.服务器初始化 B的TCP服务器进程先创建传输控制块,准备接受客户端的连接请求。然后服务器进程就处于LISTEN(监听)状态,等待客户的连接请求。 2.客户端初始化,并...

20170525-执行环境、作用域链、作用域

2017-05-25
阅读 2 分钟
1.5k
每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中(execution stack)。在函数执行完后,栈将其环境弹出,把控制权返回给之前的执行环境。ECMAScript程序中的执行流正是由这个便利的机制控制着。