一、JSON 方法
1、 `json` 是一种特殊的字符串个是,本质是一个字符串
var jsonObj = '{ "name": "Jack", "age": 18, "gender": "男" }'
①、 `json.stringify(变量)` 是将 js 的对象或者数组转换成为 json 格式的字符串
②、`JSON.parse(变量)` 是将 json 格式的字符串转换为 js 的对象或者数组
二、call 和 apply 和 bind 改变this的指向
1、call
- `call` 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向
- 语法: `函数名.call(要改变的 this 指向,要给函数传递的参数1,要给函数传递的参数
2、apply
- `apply` 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向
- 语法: `函数名.apply(要改变的 this 指向,[要给函数传递的参数1, 要给函数传递的参数2, ...])`
3、bind
- `bind` 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向
- 和 call / apply 有一些不一样,就是不会立即执行函数,而是返回一个已经改变了 this 指向的函数
- 语法: `var newFn = 函数名.bind(要改变的 this 指向); newFn(传递参数)`
三、let 和 const 关键字
`let` 和 `const` 相同点
1. `let` 和 `const` 不允许重复声明变量
2. `let` 和 `const` 声明的变量不会在预解析的时候解析(也就是没有变量提升)
3. `let` 和 `const` 声明的变量会被所有代码块限制作用范围
`let` 和 `const` 的区别
1. `let` 声明的变量的值可以改变,`const` 声明的变量的值不可以改变
2. `let` 声明的时候可以不赋值,`const` 声明的时候必须赋值
四、箭头函数
- 语法: `(函数的行参) => { 函数体内要执行的代码 }`
1、箭头函数的特殊性
①、箭头函数内部没有 this,箭头函数的 this 是上下文的 this
②、 箭头函数内部没有 `arguments` 这个参数集合
③、函数的行参只有一个的时候可以不写 `()` 其余情况必须写
fn2: a => {
console.log('一个行参,可以不写小括号')
},
fn3: (a, b) => {
console.log('两个或两个以上参数,必须写小括号')
}
④、函数体只有一行代码的时候,可以不写 `{}` ,并且会自动 return
fn: a => {
return a + 10
},
fun: a => a + 10
五、解构赋值
- 解构赋值,就是快速的从对象或者数组中取出成员的一个语法方式
1、解构对象 快速的从对象中获取成员
// 解构赋值的方式从对象中获取成员
const obj = {
name: 'Jack',
age: 18,
gender: '男'
}
// 前面的 {} 表示我要从 obj 这个对象中获取成员了
// name age gender 都得是 obj 中有的成员
// obj 必须是一个对象
let { name, age, gender } = obj
2、解构数组 快速的从数组中获取成员
// 使用解构赋值的方式从数组中获取成员
const arr = ['Jack', 'Rose', 'Tom']
// 前面的 [] 表示要从 arr 这个数组中获取成员了
// a b c 分别对应这数组中的索引 0 1 2
// arr 必须是一个数组
let [a, b, c] = arr
六、模版字符串
- ES5 中我们表示字符串的时候使用 `''` 或者 `""`
- 在 ES6 中,我们还有一个东西可以表示字符串,就是 **``**(反引号)
1. 反引号可以换行书写
```javascript
// 这个单引号或者双引号不能换行,换行就会报错了
let str = 'hello world'
// 下面这个就报错了
let str2 = 'hello
world'
```
```javascript
let str = `
hello
world
`
console.log(str) // 是可以使用的
```
2. 反引号可以直接在字符串里面拼接变量
```javascript
// ES5 需要字符串拼接变量的时候
let num = 100
let str = 'hello' + num + 'world' + num
console.log(str) // hello100world100
// 直接写在字符串里面不好使
let str2 = 'hellonumworldnum'
console.log(str2) // hellonumworldnum
```
```javascript
// 模版字符串拼接变量
let num = 100
let str = `hello${num}world${num}`
console.log(str) // hello100world100
```
- 在 **``** 里面的 `${}` 就是用来书写变量的位置
七、展开运算符
1、作用是把数组展开
```javascript
let arr = [1, 2, 3, 4, 5]
console.log(...arr) // 1 2 3 4 5
2、 合并数组的时候可以使用
```javascript
let arr = [1, 2, 3, 4]
let arr2 = [...arr, 5]
console.log(arr2)
```
3、 也可以合并对象使用
```javascript
let obj = {
name: 'Jack',
age: 18
}
let obj2 = {
...obj,
gender: '男'
}
console.log(obj2)
```
4、在函数传递参数的时候也可以使用
```javascript
let arr = [1, 2, 3]
function fn(a, b, c) {
console.log(a)
console.log(b)
console.log(c)
}
fn(...arr)
// 等价于 fn(1, 2, 3)
```