栗子:
var a = {'1':'gg','2':'love','4':'meimei',length:5};
var arr=[.. .a];
console.log(arr);
Google瀏覽器下報錯誤:Uncaught TypeError: a[Symbol.iterator] is not a function
類別數組的定義:/a/11...
javascript關於‘...’的介紹說明文件:https://developer.mozilla.org...
javascript官方文件說'...'可以將類別數組轉換成數組,為什麼還會報錯呢?迷惑!
伊谢尔伦2017-06-30 09:57:43
你發的文章,自己也要先看清楚呀。
之所以成為“類數組”,就是因為和“數組”類似。不能直接使用陣列方法,但你可以像使用陣列一樣,使用類別數組。
不可以直接使用陣列方法,你這個擴充語句不就是 直接使用了麼?
你需要先把類別數組轉換成數組,可以使用文章中介紹的 Array.prototype.slice.call(arguments)
ES6 也有個方法,Array.from(arrayLike)
習慣沉默2017-06-30 09:57:43
請用 Array.from()
如果你看英文的頁面就會發現展開對象需要是可遍歷的
Only for iterables
Spread syntax can be applied only to iterable objects:
var obj = {'key1': 'value1'}; var array = [...obj]; // TypeError: obj is not iterable