ES6之 String 和 Object 扩展方法

144 阅读2分钟

1、新增的String方法

img

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()

  1. startsWith():表示参数字符串是否在原字符串的头部,返回布尔值
  2. 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方法

img

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 }

注意:不可以枚举的属性不会被复制