Javascript многомерный объект с неожиданными свойствами - PullRequest
1 голос
/ 14 января 2010

Работая в javascipt, я инициализирую многомерный объект (который сам вложен в несколько объектов глубиной). Однако при просмотре свойств дочернего объекта он имеет неожиданные свойства, первым из которых является «fromBase64». Это происходит при использовании браузера IE6 и инфраструктуры TIBCO GI, но объект не зависит от каких-либо определенных классов GI.

Понятия не имею, откуда взялась эта собственность. Может ли кто-нибудь пролить свет?

orderProfiles.product = function(productParameters){
    this.property1 = productParameters['property1'];
    this.property2 = productParameters['property2'];
    ...
    this.childrenProducts = new Object();
};

Тогда

for (child in window.selectedProducts[contact][product]['childrenProducts']){
    alert("child = " + child);
}

Дает

child = fromBase64
child = toBase64
child = constrainLength
child = endsWith
child = urlTo
child = toAbsolute
child = doTruncate
child = escapeHTML
child = doReplace
child = trim
child = fromBase64

Ответы [ 2 ]

2 голосов
/ 14 января 2010

Используйте hasOwnProperty, чтобы различать ваши собственные свойства и свойства, которые вы унаследовали от конструктора объекта (который мог быть расширен):

var childrenProd = window.selectedProducts[contact][product].childrenProducts;
for (child in childrenProd){
  if (childrenProd.hasOwnProperty(child)){
    alert("child = " + child);
  }
}
0 голосов
/ 14 января 2010

Все они выглядят как методы, которыми prototype.js имеет расширенные объекты. Попробуйте удалить prototype.js и возьмите его оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...