Почему [это показывает] __proto__
?
Цепочка прототипов очень важна, если вы хотите понять, почему объект ведет себя определенным образом.Является ли оно отображаемым как __proto__
или [[Prototype]]
или <prototype>
на самом деле не имеет значения, не так ли?...
Как отключить эту уродливую [визуализацию объектов]?
Использовать другой браузер, если вас это действительно беспокоит.
с любопытствомMyClass.retObj (). X [кажется, не имеет] __proto__
.
Это действительно забавно, вероятно, консоль считает, что Prototype не имеет отношения к аудитории, поэтому скрывает его,однако это не совсем в обоих случаях.Однако, с другой стороны, это динамическое поведение визуализации вещей является своего рода ошибкой, поскольку можно подумать, что __proto__
существует не на одном объекте, а на другом (он существует на обоих).
MDN говорит, что [__proto__
] «больше не рекомендуется».Как отключить это уродливое свойство [__proto__
]?
И я бы не рекомендовал использовать var
, обратная совместимость уродлива, но обязательна.Удаление всех этих плохих дизайнерских решений «сломало бы интернет», поэтому их сохранение определенно лучше.
Но нет ли проблем?
Да, __proto__
проблематично для оптимизации производительности, но ... это JavaScript, браузеры знают, как оптимизировать неопределенность.
, возвращая объект, который являетсяне то, что я определил?
Вы также не определили {}.toString()
.Если вам действительно нужен полностью пустой объект, используйте
Object.create(null)
, чтобы заставить моего пользователя употреблять столько мусора?
__proto__
не перечисляется и не наследуется, вы не найдете его случайно программно, если не будете его активно искать.
Нет чистого JSON?
JSON.stringify({}) // {} ?!?