这真的困扰着我,而且它也很重要,因为它是我工作的一部分。我创建了一个对象,它基本上解析主机名并在该名称的不同部分放置标签。听起来很简单,对吧?但是,当我连续创建该对象的多个实例时,每个其他实例都变成空白,只有_proto和一些函数。没有任何数据。
值得注意的是,我正在使用旧版本的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);
});
这确实是特定Chrome版本的错误。无法更新,我故意复制数组项目并且它有效。