扩展
String
- includes(string, index) —— 返回boolean,表示从index开始,剩余字符串是否找到参数
- startWidth(string, index) —— 返回boolean,表示从index开始,剩余字符串是否以参数开头
- endWidth(string, index) —— 返回boolean,表示从index开始,剩余字符串是否以参数结尾
- repeat(n) —— 将字符串重复n次并返回, 不允许传入Infinity、负数, NaN视为0
- padStart(number, string) —— 如果字符串长度小于number,在头部补全string
- padEnd(number, string) —— 如果字符串长度小于number,在尾部补全string
模板字符串
// 多行字符串 ` line 1 line 2 ` // 反引号需要转义 `\`反引号\`` // 嵌入变量 let [name, years] = ['zhangsan', 18]; `${name} is ${age} years old!`; // 可以使用任意js表达式 `2 + 3 = ${2 + 3}` // 可以调用函数 function getName() { return 'zhangsan'; } `${getName()} is a man` // 可以紧跟在函数后面对模板进行预处理 let [name, age] = ['zhangsan', 18]; console.log(tag`${name} is ${age} years old!`); // $zhangsan is $18 years old! function tag(stringArr, ...values) { console.log(stringArr, values); let result = ''; // 这里使用var是为了代码块外能够使用index for (var index in values) result += `${stringArr[index]}$${values[index]}`; result += stringArr[++index]; return result; }
Number
- Number.isFinite() —— 检测一个数是否为无穷
- Number.isNan() —— 检测一个数是否为NaN
- Number.isInteger() —— 检测一个数是否为整数,字符串不会转为int类型
- Math.trunc() —— 返回整数部分
- Math.sign() —— 判断正数,负数,零 返回1, -1, 0
Array
- Array.from() —— 将类数组转化为数组以便遍历(常见的有NodeList, arguments, set 和 map)
- Array.of() —— 将一组值转化为数组弥补Array()构造函数的不足
- copyWithin(target, srart = 0, end = this.length) —— 将指定位置的成员复制到其他位置, target表示开始替换的位置
- find(value, index, arr) —— 找出数组中符合条件的元素
- findIndex(value, index, arr) —— 找出数组中符合条件元素的下标
- fill(value, start=0, end=this.length) —— 用指定值填充一个数组或指定元素
- entries(), keys(), value() —— 遍历数组的键值对、键、值,和map相似
- includes() 表示是否包含指定的值(ES7,当前库测试没通过)
- 数组推导 —— 允许通过表达式和现有数组生成一个新数组(ES7,当前库测试没通过)
function
参数默认值,可接受rest参数,调用的时候可使用…扩展运算符
// 利用参数默认值可以指定某个参数不可缺省 let a = [1, 2, 3] function error(name) { throw new Error(`${name} is required`); } function test(index1, index2, index3, length = error('length')) {} test(...a) // 扩展运算符还可以将类数组转化为数组,和Array.from()功能一样
- length —— 返回必须参数的个数
- name —— 返回函数的名称(将匿名函数赋值给变量时)
- 箭头函数
- this就是定义时确定
- 不可用当做构造函数
- 不可使用arguments
- 不可使用yield(generator)
Object
属性的简写
let name = 'zhangsan'; let Person = { name, age: 18, hello() { console.log('I\'m', this.name); } }; // 等同于 let Person = { name: name, age: 18, hello: function () { console.log('I\'m', this.name); } }
- 属性名表达式
javascript
let name = 'birthday';
let obj = {[name]: 'today'};
- Object.is() —— 严格判断两个对象是否相等
Object.assign(target, …source) —— 将source自身可枚举的属性拷贝到target中,如果已存在则覆盖
用这个方法会比函数指定默认参数更好一点
Object.setPrototypeOf(obj, proto) —— 设置当前的prototype对象
- Object.getPrototypeOf(obj, proto) —— 读取当前的prototype对象