1、新增的String方法
1.1 模板字符串
ES6新增的创建字符串,使用反引号定义
let str = `张三`;
console.log(str); // 张三
1、模板字符串可以解析变量
let namer = `张三`
console.log(`大家好,我叫${namer}`); // 大家好,我叫张三
2、模板字符串可以用于多行显示
let namer = `张三`
console.log(`大家好,我叫${namer}
大家好,我叫${namer}`);
// 大家好,我叫张三
// 大家好,我叫张三
3、模板字符串可以用于调用函数
let say = function() {
return 'nice to miss you!'
}
console.log(`张三, ${say()}`); // 张三, nice to miss you!
1.2 startsWith() 和 endsWith()
startsWith():表示参数字符串是否在原字符串的头部,返回布尔值endsWith():表示参数字符串是否在原字符串的尾部,返回布尔值
let str = '我一直都想对你说,你给我想不到的快乐'
console.log(str.startsWith('我一直')); // true
console.log(str.endsWith('快乐')); // true
1.3 includes()
查找字符或字符串,返回布尔值
str.includes('string', [startIndex])
string:要查询的字符串startIndex:开始查询的位置(可选)
let str = '我一直都想对你说,你给我想不到的快乐'
console.log(str.includes('对你说', 3)); // true
1.4 repeat()
repeat() 方法表示将原字符串重复n次,返回一个新字符串
str.repeat(n); // 重复n遍
let str = '张三';
let reStr = str.repeat(2);
console.log(reStr); // 张三张三
2、新增的Object方法
2.1 Object.keys()
该方法用于获取对象的所有属性
Object.keys(obj)
- 返回一个由属性名组成的数组
- 效果与
for...in
let obj = {
id: 1,
namer: '张三',
age: 2
}
console.log(Object.keys(obj)); // [ 'id', 'namer', 'age' ]
由于可以返回数组,故该方法可以用于计算对象键值对数
console.log(Object.keys(obj).length); // 3
2.2 Object.is()
Object.is()可以用于两个对象的比较
Object.is(obj1, obj2)
栗子:
let a = 1,
b = 1,
c = '1'
console.log(Object.is(a, b)); // true
console.log(Object.is(a, c)); // false
静态函数 Object.is() 用于执行比 === 更严格的值的比较
let a = NaN,
b = 0,
c = -0
console.log(a === a); // false
console.log(b === c); // true
console.log(Object.is(a, a)); // true
console.log(Object.is(b, c)); // false
所以,我们不用将 === 替换成 Object.is(),还是继续使用 === 进行严格相等比较。当需要严格识别 NaN 或者 -0 值,那么应该选择 Object.is()
2.3 Object.getOwnPropertySymbol()
ES6 新增的Symbol基本类型,主要作用就是作为对象的属性名,而 Object.getOwnPropertySymbol() 就是将对象中的符号属性名取出来,返回一个数组
let obj = {
a: '张三',
[Symbol('foo')]: '李四',
[Symbol('bar')]: '王五'
}
console.log(Object.getOwnPropertySymbols(obj)); // [ Symbol(foo), Symbol(bar) ]
2.4 Object.assign()
Object.assign()用于将多个对象复制到另一个对象中
let a = { a: 1 },
b = { b: 1 },
c = { c: 1 },
d = { d: 1 }
let obj = {}
console.log(Object.assign(obj, a, b, c, d)); // { a: 1, b: 1, c: 1, d: 1 }
注意:不可以枚举的属性不会被复制