ES6 的特性

一、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)

  ```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坨坨tuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值