2.1.5
في الكود الذي تم إنشاؤه في Babel ، لدي شيء من هذا القبيل:
Array.from(document.querySelectorAll("*"));
يقوم document.querySelectorAll("*")
بإرجاع NodeList
. ستفشل PhantomJS مع هذا الرمز.
TypeError: undefined is not a constructor (evaluating 'Array.from(document.querySelectorAll("*"))')
ويندوز 7
أنا أستخدم الكارما ، التي تحتاج بشدة إلى phantomjs-prebuilt. لذلك أنا لا أستخدم phantomjs مباشرة.
آريا
ميزات ES6 غير مدعومة في PhantomJS حتى الآن.
Vitallium شكرا على إجابتك!
هذا مضحك للغاية ، لأنه كما قلت سابقًا ، هذا جزء من كود تم إنشاؤه بابل.
عند استخدام
var arr = [...theNodeList];
لتحويل NodeList
إلى array
، سيتم إنشاء ما يلي (بما في ذلك Array.from()
) ، حتى عند استخدام الإعداد المسبق es2015:
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var arr = _toConsumableArray(theNodeList);
لقد اتخذت طريقة التحويل هذه من المستندات .
لذلك ، كما ذكرت بالفعل أن Array.from()
جزء من ES6 ، فمن المضحك أن Babel يولد كود ES6 لحل ES6. سأفتح قضية لذلك ...
يمكن تتبعها هنا https://phabricator.babeljs.io/T7305
في هذه الأثناء ، يرجى تتبع دعم ES6 في # 14506. شكرا لك!
التعليق الأكثر فائدة
Vitallium شكرا على إجابتك!
هذا مضحك للغاية ، لأنه كما قلت سابقًا ، هذا جزء من كود تم إنشاؤه بابل.
عند استخدام
لتحويل
NodeList
إلىarray
، سيتم إنشاء ما يلي (بما في ذلكArray.from()
) ، حتى عند استخدام الإعداد المسبق es2015:لقد اتخذت طريقة التحويل هذه من المستندات .
لذلك ، كما ذكرت بالفعل أن
Array.from()
جزء من ES6 ، فمن المضحك أن Babel يولد كود ES6 لحل ES6. سأفتح قضية لذلك ...