2017-12-24 1 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 : // 버전 (Chrome 버전에서 버그가 발생 함)의 출력은 무엇입니까? 이를 통해 https://www.chromestatus.com에서 사용자가 겪고있는 것과 유사한 소리를내는 고정 된 버그를 검색 할 수 있습니다. –

+0

예. 프로토 타입 함수만으로 구성된 객체 {}는 어디에서나 '정의되지 않은'곳으로 이동할 수 있습니다. – JoeTheMan

답변

0

이것은 실제로 특정 Chrome 버전의 버그였습니다. 업데이트 할 수 없기 때문에 배열 항목을 목적에 맞게 복제하여 작동했습니다.

관련 문제