2018-12-11

2018-12-11  本文已影响0人  海子小夜曲

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

 map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。

flex-direction flex-wrap flex-flow justify-content align-items align-content

order flex-grow flex-shrink flex-basis flex align-items

模板字符串

str.includes() 判断字符串是否含有某值  str.repeat(2)  字符串重复两次

arr.includes() 判断数组是否含有某值。

浅复制

Object.assign()

let objA = {

name: 'hhee',

getName() {

console.log(this.name)

}

}

let objB = {

age: 19

}

const obj = Object.assign({}, objA, objB);

obj.getName();

Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

如果要将一个已经声明的变量用于解构赋值,必须非常小心。

// 错误的写法

let x;

{x} = {x: 1};

// SyntaxError: syntax error

上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。

// 正确的写法

let x;

({x} = {x: 1});

字符串方法

normalize()  将字符的不同表示方法统一为同样的形式。

includes() startsWith()  endsWith()  返回布尔值

第一个参数 传入 字符串  第二个参数传入数值  includes 和startsWith  两个方法中 表示从第二个参数开始查,endsWith表示从第二个参数结束。因为是 结尾嘛!

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

'x'.padStart(5, 'ab') // 'ababx'

'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'

'x'.padEnd(4, 'ab') // 'xaba'

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

如果省略第二个参数,默认使用空格补全长度。

'x'.padStart(4) // '  x'

'x'.padEnd(4) // 'x  '

padStart的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。

'1'.padStart(10, '0') // "0000000001"

'12'.padStart(10, '0') // "0000000012"

'123456'.padStart(10, '0') // "0000123456"

另一个用途是提示字符串格式。

'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"

'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

箭头函数有几个使用注意点。

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

let arrayLike = {

'0': 'a',

'1': 'b',

'2': 'c',

length: 3

};

console.log(Array.from(arrayLike))

[ 'a', 'b', 'c' ]

Symbol 属性访问  Object.getOwnPropertySymbols  成员是当前对象的Symbol值。

Reflect.ownKeys方法可以返回所有类型的键名,包括常规键名和 Symbol 键名。

Symbol() 生成独一无二的值  Symbol.for()生成可以重复的值

yield表达式如果用在另一个表达式中,必须放在圆括号里。如果用作函数参数或者放在赋值表达式的右边,介意不加括号。

forEach方法的参数是一个普通函数,不能使用yield表达式

网友 vision57 提出,next()、throw()、return()这三个方法本质上是同一件事,可以放在一起理解。它们的作用都是让 Generator 函数恢复执行,并且使用不同的语句替换yield表达式。

next()是将yield表达式替换成一个值。

const g = function* (x, y) {

  let result = yield x + y;

  return result;

};

const gen = g(1, 2);

gen.next(); // Object {value: 3, done: false}

gen.next(1); // Object {value: 1, done: true}

// 相当于将 let result = yield x + y

// 替换成 let result = 1;

上面代码中,第二个next(1)方法就相当于将yield表达式替换成一个值1。如果next方法没有参数,就相当于替换成undefined。

throw()是将yield表达式替换成一个throw语句。

gen.throw(new Error('出错了')); // Uncaught Error: 出错了

// 相当于将 let result = yield x + y

// 替换成 let result = throw(new Error('出错了'));

return()是将yield表达式替换成一个return语句。

gen.return(2); // Object {value: 2, done: true}

// 相当于将 let result = yield x + y

// 替换成 let result = return 2;

上一篇下一篇

猜你喜欢

热点阅读