簡體   English   中英

在Node.js v 8.9.3上,擴展類上的Array.concat方法刪除空值-為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM