WeakMap 的语法
WeakMap 与 Map 在 API 上的区别主要是两个,一是没有遍历操作(即没有keys()
、values()
和entries()
方法),也没有size
属性。因为没有办法列出所有键名,某个键名是否存在完全不可预测,跟垃圾回收机制是否运行相关。这一刻可以取到键名,下一刻垃圾回收机制突然运行了,这个键名就没了,为了防止出现不确定性,就统一规定不能取到键名。二是无法清空,即不支持clear
方法。因此,WeakMap
只有四个方法可用:get()
、set()
、has()
、delete()
。
String
前导零的添加删除
add :将oValue 的位数用0 补足(在字符串前面)
ES2017
oValue.padStart(35, ‘0’);
ex,
'abc'.padStart(10, '0123456789')
// '0123456abc'
如果省略第二个参数,默认使用空格补全长度。
'x'.padStart(4) // ' x'
'x'.padEnd(4) // 'x '
delete
removeLeadingZero(str) {
return typeof str === ‘string’ ? str.replace(/\b(0+)/gi, ‘’) : str;
}
ES2019 对字符串实例新增了trimStart()
和trimEnd()
这两个方法。它们的行为与trim()
一致,trimStart()
消除字符串头部的空格,trimEnd()
消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
const s = ' abc ';
s.trim() // "abc"
s.trimStart() // "abc "
s.trimEnd() // " abc"
除了空格键,这两个方法对字符串头部(或尾部)的 tab 键、换行符等不可见的空白符号也有效。
浏览器还部署了额外的两个方法,trimLeft()
是trimStart()
的别名,trimRight()
是trimEnd()
的别名。
ES6 模板字符串
浅拷贝:拷贝的是地址
const a=[1,3];
const b=a;
此时是深拷贝,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组。
a b 其中任一的值改变,另一个的值都会改变。
深拷贝:
const a=[1,3];
const b=[];
b[0]=a[0];
b[1]=a[1];
此时是将a 数组的值拷贝到b a 的改变不会导致b 跟着改。
es6 写法:
const a=[2,3,4];
const b=[...a];
//or
const [...b]=a;
/**
* @description deep clone data
*/
cloneFun(params) {
const type = Array.isArray(params) ? [] : {};
return jQuery.extend(true, type, params);
},