[英]On Node.js v 8.9.3 the method Array.concat on extended class remove empty values - Why?
我試圖在不更改Array
類的情況下為Arrays
添加一些新功能到node.js中,以避免對其他模塊產生意外影響。
當我開始測試代碼時,我發現了一些失敗,最終我找到了原因。 擴展后, concat
方法的行為有所不同。
這對我來說是完全陌生的。 這是預期的行為嗎?
很短的版本看問題:
class MyArray extends Array{}; /* * Test with values */ var sizeValueArray = new Array(4,4,4).concat([1,2,3]).length; var sizeValueMyArray = new MyArray(4,4,4).concat([1,2,3]).length; console.log( "size from concat values array = ", sizeValueArray ); console.log( "size from concat values my array = ", sizeValueMyArray ); if( sizeValueArray != sizeValueMyArray ) { console.log("this is strange"); } else { console.log("as expected.") } /* * Test with empty values */ var sizeEmptyArray = new Array(5).concat(new Array(6) ).length; var sizeEmptyMyArray = new MyArray(5).concat(new MyArray(6) ).length; console.log( "size from concat empty array = ", sizeEmptyArray); console.log( "size from concat empty my array = ", sizeEmptyMyArray ); if( sizeEmptyMyArray != sizeEmptyArray ) { console.log("this is strange"); } else { console.log("as expected.") }
您可以在瀏覽器中看到,這兩個操作的結果是相同的。 但不在node.js中,如您在此處看到的https://repl.it/@thiagodamata/ArrayConcatStrangeBehaviorOnExtend
看來此錯誤已在最新版本中修復。 您可以看到此repl中的工作。 因此,這是一個已修復的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.