Консоль Google Chrome неправильно отображает массив -как объекты, когда их индексаторы основаны на получении/установке?

Я считаю, что часть стандарта ECMA заключается в том, что консоли Javascript будут отображать объекты в виде массивов, когда объекты похожи на массивы -.

Например, :["hello", "world"] для объекта, содержащего строки с числовым индексом.

Поведение, подобное массиву -, определяется как свойство длины и метод соединения, присутствующие в объекте, а также свойства с числовым индексом.

Многие из нас, вероятно, видели это с jQuery в прошлом.

Я пытался воспользоваться этим поведением и считаю его желательным. Однако у меня есть дополнительное требование, чтобы мои индексы использовали геттеры/сеттеры для их установки, чтобы я мог выполнять дополнительную обработку при их изменении.

Однако, когда я делаю это, приведенный выше массив вместо этого отображается как :

[не определено × 2]

Однако в остальном объект ведет себя точно так же, как простой пример.

См. эту скрипту для лучшего объяснения:http://jsfiddle.net/5YgAv/

Итак, вы видите? Два очень похожих примера, однако наличие геттера сломало их в консоли.

Я отлаживал последний исходный код Chromium, и кажется, что Chrome отправляет сообщение на консоль, которое по существу содержит функцию получения. Однако нет способа изменить исходный код консоли, чтобы он мог вызывать функцию и получать значение. Если бы это было возможно, мы могли бы модифицировать инструменты разработчика для правильной обработки геттеров и сеттеров.

Я хотел бы знать, есть ли у кого-нибудь представление об этой интересной маленькой ошибке или о том, как ее лучше всего исправить, прежде чем я зарегистрирую ее как ошибку команде Chrome, которая будет давно забыта и похоронена в недрах Google. Я на самом деле очень хотел бы исправить это сам так или иначе.

Я также открыт для элегантного обходного пути, который позволяет мне выполнять некоторую специальную обработку, когда любое из свойств моего массива -, например объекта, изменяется.

Помоги мне Оби -Stackoverflow -Кеноби, ты моя единственная надежда!

[Райан]

11
задан Ryan Worsley 4 July 2012 в 17:56
поделиться