2018/5/29-2018/6/1

2018.5.29
1、跟进西北专题
2、研究途牛网的专题
主要是引入了ga.js和zeus.js文件,但是这两个文件里面也没有看到自动生成HTML内容的代码。都是一些配置项,比如判断机型、判断是PC还是移动端、设置并获取cookie等。

2018.5.30
1、了解函数的属性:arguments、this、apply()、call()【这两个绑定当前函数的执行环境到指定的作用域】、length(返回函数中
命名参数的个数)、arguments.callee表示当前正在执行的函数(严格模式下无效)
arguments.callee.caller(表示正在执行函数的函数的作用域)
2、了解基本包装类型:Boolean、Number、String;
字符串的操作方法:concat()[相当于+号]、slice()、substring()、substr()、charAt()、charCodeAt()、fromCharCode()、
indexOf()、lastIndexOf()、match()、search()、replace();
Math对象的方法: min()、max()、ceil()、floor()、round()、random()、abs()、sqrt()等

3、熟悉对象内部的数据属性和访问器属性、创建对象的方式、实现继承的方式(涉及了原型链的形成)、检测对象的类型

4、了解Array内置对象的方法:
4.1 Array.isArray(values)方法,判断values是不是数组,支持IE9+;
对于不支持Array.isArray()方法的浏览器,可以使用如下代码:
function isArray(values) {
return Array.prototype.toString.call(values) == '[object Array]'
}
4.2 Array.toString()、Array.valueOf()、join()、split()
4.3 栈方法:push()、pop()
4.4 队列结构方法的结合:push()和shift()、pop()和unshift()
4.5 排序方法:reverse()、sort()
【sort()方法会先调用toString()方法,然后再比较字符串,通常传入一个比较函数得到的结果更准确】
4.6 复制或截取数组中某一部分元素的方法:concat()、slice()
concat()方法,如果没有参数,则返回原数组的一个副本;如果有参数,先返回原数组的副本,再将参数添加到副本的后面;
该方法不会更改原数组的值。
slice()方法,如果传入的只有一个数值,就返回从该数值位置到数组末尾的所有元素;如果传入两个数值参数,就返回这两个
数值之间的元素,但不包括第二个数值位置的元素。
4.7 会更改原数组的方法:splice(),可以删除、插入、替换
splice()方法,始终返回被删除的项,如果没有元素被删除,则返回空数组。
删除:splice(0,2);两个参数,第一个参数表示开始删除的元素位置,第二个参数表示删除几个元素。
插入:splice(1,0,"red");第二个参数一定是0,表示删除0个元素;第一个参数还是表示开始操作的位置,后面的参数表示要插
入的项;
替换:splice(2,1,"yellow");第二个参数表示删除几个元素,然后后面的参数表示要替换的项;第一个参数还是表示开始
操作的位置。
4.8 查找指定元素位置的方法:indexOf()、lastIndexOf()
如果只有一个参数,那就是表示查找该元素在数组中的位置;如果第二个参数是一个数值,表示开始进行查找操作的位置;
4.9 迭代方法:every()、some()、forEach()、map()、filter()
迭代方法的参数,第一个参数传入一个函数,这个函数会在数组中每一项元素上运行,这个函数有三个参数,数组元素、数组
元素的索引、数组本身;第二个参数可选,传入运行该函数的作用于对象(影响this的值)
every(): 返回布尔值,如果数组中的每一项都满足函数处理的条件,则返回true;否则返回false;
some():返回布尔值,如果数组中存在某一项或多项满足函数处理的条件,就返回true;否则返回false;
filter(): 返回满足函数处理条件的元素的集合(数组);
map(): 返回数组中的每一项被函数处理后的结果组成的集合(数组)
forEach(): 对元素中的每一项进行函数操作,没有返回值。
4.10 缩小方法:reduce()、reduceRight()
对数组中的每一项进行操作,最后返回一个最终结果。这两个方法的第一个参数都是一个函数,作用在每一个元素上面个;该函数有四个参数,prev、cur、index、array;第二个参数可选,指定传入的初始值。

5、ES6中字符串的扩展
5.1 针对4个字节的字符,提出的修正方法有:
1)对于Unicode字符超出\uffff的,使用{}包含即可正确识别该字符;
2)使用codePointAt()返回四个字节存储的字符的每个位置上的十进制字符码,可用toString(16)转化为16进制码,
codePointAt(0).toString(16);再使用fromCodePoint()返回字符。(charCodeAt()、fromCharCode()不能处理四个字节的字
符)
3)使用for...of遍历大于4个字节的字符。
4)使用at()方法替代charAt()方法来访问四个字节的字符。
5)对于带有重音符号的合成字符,可以使用mormalize()方法进行合成和分解,normalize(NFC)表示合成;normalize(NFD)表
示分解。
5.2 检查某个子串是否在字符串当中,ES5中只有indexOf()、lastIndexOf()、search()以及结合正则的match()方法;
ES6新增了includes()方法、startsWith()、endsWith()
5.3 重复字符串:repeat()
5.4 填补字符串,规定了最小长度的字符串,如果长度不够,使用规定的字符来填补。
padStart()、padEnd();接受两个参数,第一个参数是规定的字符串的最小长度,第二个参数是用来填补的字符。
5.5 模板字符串

2018.5.31
6、数组扩展
6.1 扩展运算符的用处
1) 将数组转化为逗号分隔的参数序列
2) 不用使用apply()方法,来传递一个数组形式的参数;
var a = [1,2,3];
//ES5
Math.max.apply(null,a);
//ES6
Math.max(...a);
3) push数组中的每个元素时,也不用去遍历或者使用apply()方法。
4)简化了ES5中使用concat()复制数组和合并数组的操作。
5)与解构赋值结合使用,可以生成新的数组,此时只能放在参数的最后,否则会报错。
6)可以将字符串分割为数组,并能正确识别四个字节的Unicode字符。
7)可以将实现了Iterator接口的类数组转化为真正的数组,对于没有实现Iterator接口的类数组对象,可以使用Array.from()将其
转化为真正的数组。
6.2 Array.from()将类数组对象和任何具有length属性的对象转化为真正的数组。对于没有使用该方法的使用
Array.prototype.slice方法实现
6.3 Array.of()将一组值转化为数组,弥补new Array()或者Array()创建数组时的缺陷。
6.4 find()和findIndex()方法,用来找到第一个满足回调函数条件的值。这两个函数接收两个参数,第一个参数是回调函数,第
二个可以传入绑定的this对象。属于迭代方法。
6.5 fill()方法,使用指定值来填充数组,第一个参数是用来填充的指定值,第2、3个参数可选,用来指定填充的起止位置。
如果是引用类型的数据填充,那修改其中一个,会影响全部位置的值。
6.6 entries(),keys(),values()
6.7 includes()
6.8 注意ES5与ES6对数组空位的处理不统一,所以避免出现空位。

7、西北专题bug修复。

8、对象的扩展

你可能感兴趣的:(2018/5/29-2018/6/1)