随笔分类 -  JavaScript

javascript的一些算法备忘
摘要:组件的生命周期可分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM 生命周期的方法有: componentWillMount 在渲染前调用,在客户端也在服务端。 componentDidMount : 在第一次渲染后调用, 阅读全文
posted @ 2017-04-03 22:41 ZhangCui 阅读(1121) 评论(0) 推荐(0) 编辑
摘要:HTTP是一种无状态的协议,,由客户端请求和服务端响应组成。HTTP实际上是比较特殊的网络协议。 大多数基于因特网的网络连接通常包含长连接和基于TCP套接字的双向消息交换。让不信任的客户端脚本访问底层的TCP套接字是不安全的,但是WebSocket API定义了一种安全方案:它允许客户端代码在客户端 阅读全文
posted @ 2017-04-01 21:59 ZhangCui 阅读(1540) 评论(0) 推荐(0) 编辑
摘要:1、修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。 2、 上面代码中,@testable就是一个修饰器。它修改了MyTestableClass这个类的行为,为它加上了静态属性isTestable。 3、修饰器不仅可以修饰类,还可以修饰类的属性。 上 阅读全文
posted @ 2017-03-31 20:56 ZhangCui 阅读(3077) 评论(0) 推荐(1) 编辑
摘要:1、await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try...catch代码块中。 2、多个await命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。 3、await命令只能用在async函数之中,如果用在普通函数,就会报错。 上面代 阅读全文
posted @ 2017-03-30 22:01 ZhangCui 阅读(882) 评论(0) 推荐(0) 编辑
摘要:1、async函数返回一个 Promise 对象。 async函数内部return语句返回的值,会成为then方法回调函数的参数。 2、async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。 3、只有async函数内部的异 阅读全文
posted @ 2017-03-29 22:23 ZhangCui 阅读(14907) 评论(0) 推荐(1) 编辑
摘要:1、async 函数是 Generator 函数的语法糖。前文有一个 Generator 函数,依次读取两个文件。 写成async函数,就是下面这样。 async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。 2、async函数对 Gene 阅读全文
posted @ 2017-03-28 21:07 ZhangCui 阅读(6464) 评论(0) 推荐(0) 编辑
摘要:内容来自曾探,《JavaScript设计模式与开发实践》,P49 函数柯里化(function currying)又称部分求值。一个currying的函数首先会接受一些参数,接受了这些参数后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包里被保存起来。待到函数真正需要 阅读全文
posted @ 2017-03-22 19:34 ZhangCui 阅读(4248) 评论(0) 推荐(0) 编辑
摘要:1、那些需要使用函数表达式的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了this。 2、所有配置项都应该集中在一个对象,放在最后一个参数,布尔值不可以直接作为参数。 3、不要在函数体内使用arguments变量,使用rest运算符(...)代替。因为rest运算符显式表明你想要获取参数,而且 阅读全文
posted @ 2017-03-21 13:47 ZhangCui 阅读(241) 评论(0) 推荐(1) 编辑
摘要:1、ES6提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而且let没有副作用。 2、var命令存在变量提升效用,let命令没有这个问题。建议不再使用var命令,而是使用let命令取代。 3、在let和const之间,建议优先使用const,尤其是 阅读全文
posted @ 2017-03-20 17:59 ZhangCui 阅读(614) 评论(0) 推荐(1) 编辑
摘要:1、<script>标签打开defer或async属性,脚本就会异步加载。渲染引擎遇到这一行命令,就会开始下载外部脚本,但不会等它下载和执行,而是直接执行后面的命令。 defer与async的区别是:前者要等到整个页面正常渲染结束,才会执行;后者一旦下载完,渲染引擎就会中断渲染,执行这个脚本以后,再 阅读全文
posted @ 2017-03-18 16:51 ZhangCui 阅读(313) 评论(0) 推荐(0) 编辑
摘要:1、如果想设置跨模块的常量(即跨多个文件),或者说一个值要被多个模块共享,可以采用下面的写法。 2、如果要使用的常量非常多,可以建一个专门的constants目录,将各种常量写在不同的文件里面,保存在该目录下。 然后,将这些文件输出的常量,合并在index.js里面。 使用的时候,直接加载index 阅读全文
posted @ 2017-03-17 17:57 ZhangCui 阅读(2036) 评论(0) 推荐(0) 编辑
摘要:1、如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名。 2、import命令具有提升效果,会提升到整个模块的头部,首先执行。这种行为的本质是,import命令是编译阶段执行的,在代码运行之前。 3、由于import是静态执行,所以不能使用表达式和变量,这些只有在 阅读全文
posted @ 2017-03-16 22:29 ZhangCui 阅读(349) 评论(0) 推荐(0) 编辑
摘要:1、在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。 2、ES6 可以 阅读全文
posted @ 2017-03-15 19:27 ZhangCui 阅读(614) 评论(0) 推荐(0) 编辑
摘要:1、类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。 2、父类的静态方法,可以被子类继承。静态方法也是可以从super对象上调用的。 3、静态属性指的是Class本身的属性,即 阅读全文
posted @ 2017-03-14 20:45 ZhangCui 阅读(832) 评论(0) 推荐(0) 编辑
摘要:1、原生构造函数会忽略apply方法传入的this,也就是说,原生构造函数的this无法绑定,导致拿不到内部属性。比如,Array构造函数有一个内部属性[[DefineOwnProperty]],用来定义新属性时,更新length属性,这个内部属性无法在子类获取,导致子类的length属性行为不正常 阅读全文
posted @ 2017-03-13 21:23 ZhangCui 阅读(401) 评论(0) 推荐(0) 编辑
摘要:1、Object.getPrototypeOf方法可以用来从子类上获取父类。因此,可以使用这个方法判断,一个类是否继承了另一个类。 2、super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 第一种情况,super作为函数调用时,代表父类的构造函数。ES6 阅读全文
posted @ 2017-03-12 14:32 ZhangCui 阅读(529) 评论(0) 推荐(1) 编辑
摘要:1、Class之间可以通过extends关键字实现继承。 上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象。 子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类 阅读全文
posted @ 2017-03-11 22:34 ZhangCui 阅读(378) 评论(0) 推荐(0) 编辑
摘要:1、与函数一样,类也可以使用表达式的形式定义。 这个类的名字是MyClass而不是Me,Me只在Class的内部代码可用,指代当前类。 如果类的内部没用到的话,可以省略Me,也就是可以写成下面的形式。 2、采用Class表达式,可以写出立即执行的Class。 3、私有方法是常见需求,但 ES6 不提 阅读全文
posted @ 2017-03-10 23:29 ZhangCui 阅读(576) 评论(0) 推荐(0) 编辑
摘要:1、ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。 2、 上面代码定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。也就是说,ES5的构造函数Point,对应ES6的P 阅读全文
posted @ 2017-03-09 21:40 ZhangCui 阅读(24439) 评论(0) 推荐(2) 编辑
摘要:1、ES6 诞生以前,异步编程的方法,大概有下面四种。 回调函数 事件监听 发布/订阅 Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。 2、所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执 阅读全文
posted @ 2017-03-08 21:31 ZhangCui 阅读(697) 评论(0) 推荐(0) 编辑