Если вы выполняете console.log($('some selector'))
в браузере, он возвращает то, что выглядит как массив (первая строка):
Но обратите внимание, что это не instanceof Array
, но на самом деле объект jQuery
.
Когда вы выполняете console.dir($('h1'))
, он показывает, что это фактически объект jQuery.
Вопрос в том, как они делают его похожим на массив в веб-консоли? Я заметил в источнике jQuery здесь они добавляют ссылку на несколько методов массива и объекта и здесь они добавляют toArray
(и срез и другие) к объекту jQuery
. Является ли веб-консоль каким-то образом проверять эти методы, и если он находит один (toArray
, indexOf
, slice
и т.д.), Он печатает его как массив? Я хотел бы получить это поведение из любого пользовательского объекта, такого как Ember.ArrayProxy
. В настоящее время, когда вы регистрируете Ember.ArrayProxy
, он показывает > Object
или что-то еще, но было бы неплохо показать его как массив.
Любые идеи?