随笔分类 -  JavaScript

javascript的一些算法备忘
摘要:1、异步操作的同步化表达 Generator函数的暂停执行的效果,意味着可以把异步操作写在yield语句里面,等到调用next方法时再往后执行。这实际上等同于不需要写回调函数了,因为异步操作的后续操作可以放在yield语句下面,反正要等到调用next方法时再执行。所以,Generator函数的一个重 阅读全文
posted @ 2017-03-07 21:40 ZhangCui 阅读(1769) 评论(0) 推荐(0) 编辑
摘要:1、Generator 函数是 ES6 提供的一种异步编程解决方案。形式上,Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield语句,定义不同的内部状态。 2、Generator函数的调用方法与普通函数一样,也是在 阅读全文
posted @ 2017-03-06 21:46 ZhangCui 阅读(406) 评论(0) 推荐(1) 编辑
摘要:1、一个数据结构只要部署了Symbol.iterator属性,就被视为具有iterator接口,就可以用for...of循环遍历它的成员。也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。 2、for...of循环可以使用的范围包括数组、Set 和 Map 结构 阅读全文
posted @ 2017-03-05 20:33 ZhangCui 阅读(1315) 评论(0) 推荐(0) 编辑
摘要:1、遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。 2、Iterator的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次 阅读全文
posted @ 2017-03-04 21:48 ZhangCui 阅读(18478) 评论(1) 推荐(8) 编辑
摘要:1、Promise实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的。它的作用是为Promise实例添加状态改变时的回调函数。 2、Promise.prototype.catch方法是.then(null, rejection)的别名,用于指定发生错误 阅读全文
posted @ 2017-03-03 22:06 ZhangCui 阅读(345) 评论(0) 推荐(0) 编辑
摘要:1、Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。 2、所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 3、对象的状态不受外界 阅读全文
posted @ 2017-03-02 21:24 ZhangCui 阅读(1132) 评论(2) 推荐(0) 编辑
摘要:1、Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的有这样几个。 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。 修改某些Object方法的返回结果,让其变 阅读全文
posted @ 2017-03-01 22:04 ZhangCui 阅读(10570) 评论(0) 推荐(1) 编辑
摘要:1、has方法用来拦截HasProperty操作,即判断对象是否具有某个属性时,这个方法会生效。典型的操作就是in运算符。 上面代码中,如果原对象的属性名的第一个字符是下划线,proxy.has就会返回false,从而不会被in运算符发现。 2、如果原对象不可配置或者禁止扩展,这时has拦截会报错。 阅读全文
posted @ 2017-02-28 21:49 ZhangCui 阅读(643) 评论(0) 推荐(0) 编辑
摘要:1、Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 2、Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤 阅读全文
posted @ 2017-02-27 22:17 ZhangCui 阅读(7913) 评论(0) 推荐(0) 编辑
摘要:1、ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 2、Set 函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。 3、Set.prototype.size:返回Set实例的成员总数。 四 阅读全文
posted @ 2017-02-25 11:38 ZhangCui 阅读(6324) 评论(0) 推荐(1) 编辑
摘要:来自JavaScript秘密花园 1、转换为字符串 将一个值加上空字符串可以轻松转换为字符串类型。 2、字符串转换为数字 3、转换为布尔值 通过使用 否 操作符两次,可以把一个值转换为布尔型。 阅读全文
posted @ 2017-02-24 13:07 ZhangCui 阅读(12432) 评论(0) 推荐(0) 编辑
摘要:1、ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。 2、Symbol值通过Symbol函数生成。这就是 阅读全文
posted @ 2017-02-23 21:56 ZhangCui 阅读(17610) 评论(1) 推荐(3) 编辑
摘要:1、ES6允许直接写入变量和函数,作为对象的属性和方法。这种写法用于函数的返回值,将会非常方便。CommonJS模块输出变量,就非常合适使用简洁写法。 2、ES6 允许字面量定义对象时,用表达式作为对象的属性名,即把表达式放在方括号内。 3、ES5比较两个值是否相等,只有两个运算符:相等运算符(== 阅读全文
posted @ 2017-02-21 21:33 ZhangCui 阅读(5325) 评论(0) 推荐(0) 编辑
摘要:1、ES6函数参数的默认值,直接写在参数定义的后面。参数变量是默认声明的,所以不能用let或const再次声明。 2、通常情况下,定义了默认值的参数,应该是函数的尾参数。因为这样比较容易看出来,到底省略了哪些参数。如果非尾部的参数设置默认值,实际上这个参数是没法省略的。除非显式输入undefined 阅读全文
posted @ 2017-02-20 20:30 ZhangCui 阅读(2054) 评论(0) 推荐(0) 编辑
摘要:1、Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。 实际应用中,常见的类似数组的对象是DOM操作返回的NodeList集合,以及函数内部的arguments对象。 阅读全文
posted @ 2017-02-19 15:00 ZhangCui 阅读(703) 评论(0) 推荐(0) 编辑
摘要:1、ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。 2、如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。 3、ES6在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法。它们与传统的全 阅读全文
posted @ 2017-02-18 22:14 ZhangCui 阅读(524) 评论(0) 推荐(0) 编辑
摘要:1、在ES5中,RegExp构造函数的参数有两种情况。第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。但是,ES5不允许此时使用第二个参数,添加修饰符,否则会报错。 ES6改变了这种行为。如果Reg 阅读全文
posted @ 2017-02-17 18:04 ZhangCui 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:函数可以将先前操作的结果记录在某个对象里,从而避免无谓的重复运算。这种优化方式被称为记忆(memoization)。JavaScript的对象和数组要实现这种优化是非常方便的。 比如说,我们想要一个递归函数来计算Fibonacci数列。一个Fib数字是之前两个Fib数字的和。最前面的两个数字是0和1 阅读全文
posted @ 2017-02-17 15:43 ZhangCui 阅读(2340) 评论(0) 推荐(0) 编辑
摘要:1、codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。codePointAt方法会正确返回32位的UTF-16字符的码点。 2、ES5提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别32位的UTF-16字符(Unicode编 阅读全文
posted @ 2017-02-16 14:13 ZhangCui 阅读(2965) 评论(0) 推荐(1) 编辑
摘要:1、ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 2、ES6允许写成:let [a,b,c] = [1,2,3];上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边 阅读全文
posted @ 2017-02-15 15:41 ZhangCui 阅读(4118) 评论(1) 推荐(0) 编辑