关于...语法。

来源:4-6 Vuex之state和getters

qq_缺南摸了个北_0

2019-06-22

  // 
  let arr = [1,2,3] // Array.prototype[Symbol.iterator] = function * () {xxxxxx}
  arr[Symbol.iterator] = function * () {
    yield '呵呵'
    yield '哈哈'
  }
  console.log(arr)
  for (let a of arr) { 
    console.log(a) // 呵呵 哈哈
  }

  let arr2 = [...arr] 
  console.log(arr2) // ['呵呵','哈哈']


  let obj = {
    name: 'abc'
  }
  let obj2 = {
    ...obj, // Object.prototype上没有设置 [Symbol.iterator] 的迭代器函数,为什么可以使用扩展方法呢?
    age: 22
  }
  console.log(obj2) // {name:'abc',age:22}

它压根就没有实现迭代器呀?使用 for of 直接报错 obj is not iterable
但是在

 let obj2 = {
    ...obj, // Object.prototype上没有设置 [Symbol.iterator] 的迭代器函数,为什么可以使用扩展方法呢?
    age: 22
  }

Object.prototype上没有设置 [Symbol.iterator] 的迭代器函数,为什么obj可以使用扩展方法呢?

写回答

1回答

Jokcy

2019-06-22

具体如何实现我也不是很清楚,但是obj可以通过keys或者entries获取可遍历的内容,可能跟这个有关

0
1
qq_缺南摸了个北_0
非常感谢!
2019-06-22
共1条回复

Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲

深入讲解Vue核心技术,展示Vue应用开发中的各种问题和解决方案

3168 学习 · 853 问题

查看课程