lisa的个人博客

慢慢理解世界,慢慢更新自己

0%

ES6+新增语法

ES6新增值比较函数Object.is()

ES6新增加的比较方法大多数情况下等价于’===’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1 === 1 // true
Object.is(1, 1) // true

'a' === 'a' // true
Object.is('a', 'a') // true

true === true // true
Object.is(true, true) // true

null === null // true
Object.is(null, null) // true

undefined === undefined // true
Object.is(undefined, undefined) // true

但对于NaN、0、+0、 -0,则和 “===” 不同

1
2
3
4
5
6
7
8
9
NaN === NaN // false
Object.is(NaN, NaN) // true

0 === -0 // true
Object.is(0, -0) // false

-
0 === +0 // true
Object.is(-0, +0) // false

es8新增语法 padStart()padEnd()

这两个函数方法是ES8新增的实例方法,不兼容IE浏览器,函数接受两个参数,第一个是字符串需要填充的目标长度(必填),第二个是填充字符串(可选), 如果填充的字符串长度超过了目标长度,则保留最左侧的部分。
使用方法如下:

1
2
3
'x'.padStart(4, 'ab'); // 'abax'

'x'.padEnd(5, 'ad'); // 'xabab'

假设现在有这样一个需求,实现mask函数将’123456’转为’##3456’, 只保留最后四个字符。

试着用上面提供的方法做一下

1
2
3
4
5
const mask = (str, maskChar = '#') => {
return str.slice(-4).padStart(str.length, maskChar);
};

console.log(mask('123456')) // ##3456

Object.fromEntries()和Object.entries()

场景需要:
let obj = {a:1, b:2, c:3}; 提取对象中所有value值大于1的键值对并返回最新的对象

1
let newObj = Object.fromEntries(Object.entries(obj).filter(([k, v]) => v > 1)); // {b: 2, c: 3}

…rest代替arguments

es6箭头函数中不识别arguments对象,使用…args来替代arguments获取参数。

举例说明:

1
2
3
4
5
6
7
8
9
10
11
// es5 以下两种方法都可以
function one() {
return arguments;
};

function one(...args) {
return args;
};

// es6 只能通过这种方式获取 args是一个数组
const two = (...args) => args;