2017-12-24 2 views
1

それは本当に私を悩ますものであり、それは私の仕事の一部であるので重要なことです。 私は基本的にホスト名を解析し、その名前の異なる部分にラベルを付けるオブジェクトを作った。 かなり簡単ですね。しかし、私はそのオブジェクトのいくつかのインスタンスを連続して作成すると、他のすべてのインスタンスは、_protoといくつかの関数だけで空白になります。データはまったくありません。ループの中に作成する他のすべてのオブジェクトが古いバージョンのChromeで空白になるのはなぜですか?

古いバージョンのChromeを使用していることに注意することが重要です(実際にはネットワークは閉回路であり、ネット上のソフトウェアを更新することは不可能です)。同じコードが自宅で機能します。

私は間違って何をしていますか? ありがとうございます。

var reg = /([A,B,C,D,E])(\d{3})(\d{2})([F,G,H])(\d{2})/i; 
var hostParser = function(hostname) { 

    var parsed = reg.exec(hostname); 
    if (parsed) { 
     this.prefix = parsed[1]; 
     this.arena = parsed[2]; 
     this.waitingRoom = parsed[3]; 
     this.adminStatus = parsed[4]; 
     this.ID = parsed[5]; 
     this.hostname = hostname.toUpperCase(); 
     return this; 
    } 
    return false; 
}; 
Array.prototype.eliminateDuplicates = function() { 
    var r = []; 
    this.forEach(function(n) { 
     if (r.indexOf(n) < 0) 
      r.push(n); 
    }); 
    return r; 
}; 
Array.prototype.trim = function() { 
    var r = []; 
    this.forEach(function (n) { 
     if (!/^\s?$/.test(n)) 
      r.push(n); 
    }); 
    return r; 
}; 
var list = [ 
    'A40800G01', 
    'A40800G02', 
    'A40800G03', 
    'A40800G04', 
    'A40800G05', 
    'A40800G06', 
    'A40800G07', 
    'A40800G08', 
    'A40800G09' 
]; 
list.trim().eliminateDuplicates().forEach(function (item) { 
    var itemParser = new hostParser(item); 
    console.log(itemParser); 
}); 
+0

hostParser内の解析された変数とforEachの項目もログに記録しようとしましたか?何が出力されますか? –

+0

最新バージョンで修正されたChromeのバグが見つかったようです(現在のバージョンでは正常に動作しているようです)。お使いのコンピュータのchrome:// versionの出力は何ですか(つまり、Chromeバージョンではバグが発生します)。これで、あなたはhttps://www.chromestatus.comであなたが経験しているのと同じように聞こえる固定のバグを探すことができます。 –

+0

はい。プロトタイプ関数だけで構成されたオブジェクト{}から単なる「未定義」に至るまで、どこにでも行くことができます。 – JoeTheMan

答えて

0

これは確かに特定のChromeバージョンのバグでした。更新できないので、目的に応じて配列アイテムを複製していました。

関連する問題