在看MDN的描述時,遇到了疑惑。MDN對這個方法是這么描述的你可能想在擴展數組類 MyArray 上返回 Array 對象。 例如,當使用例如 map() 這樣的方法返回默認的構造函數時,你希望這些方法能夠返回父級的 Array 對象,以取代 MyArray 對象。 // demo class MyArray extends Array { static get [Symbol.species]() { return Array; // 1 } } var a = new MyArray(1, 2, 3); // 2 var mapped = a.map(x => x * x); // 3 console.log(mapped instanceof MyArray); // false console.log(mapped instanceof Array); // true按照我的理解,這個方法會在創建對象時觸發,得到的對象應該也是Array類型的實例。調試發現代碼執行到2時,并沒有跳到1處執行,而在執行3處的map方法時繼續執行到了1處。此時a instanceof MyArray === true, a instanceof Array === true。3處執行完了之后會得出代碼中的輸出結果。到底這個方法會在何時觸發?為什么a instanceof MyArray === true 但是 mapped instanceof MyArray === false?
Symbol.species方法應該是什么時候觸發?
婷婷同學_
2018-11-14 13:15:27