Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 04.07.2019
Сообщений: 16

Почему у объекта прототип имеет свой прототип?

03.04.2022, 23:06. Показов 653. Ответов 2

Студворк — интернет-сервис помощи студентам
Приветствую.
Насколько я понимаю, все объекты наследуют от глобального объекта, т.е. во внутреннем слоте [[Prototype]] у объекта находится ссылка на глобальный объект. Глобальный же объект ссылается на null. Это можно увидеть так:
JavaScript
1
2
3
let obj = {name: "obj"};
 
console.log( Object.getPrototypeOf(obj) );
Мы создали объект и проверили, что записано в его внутреннем свойстве [[Prototype]]. Там, как и должно быть, содержится глобальный объект (рис. 1)

Теперь выведем в консоль весь объект:
JavaScript
1
2
3
let obj = {name: "obj"};
 
console.log(obj);
Получается (рис. 2), что в объекте obj есть еще какой-то объект, который ссылается уже на глобальный объект, который, в свою очередь, ссылается на null. Откуда берется этот дополнительный объект?

p.s. На втором рисунке, если раскрыть свойство __proto__ будет null, забыл открыть.
Миниатюры
Почему у объекта прототип имеет свой прототип?   Почему у объекта прототип имеет свой прототип?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2022, 23:06
Ответы с готовыми решениями:

Передать прототип объекта в новое окно
Доброго времени суток! Нажав на картинку, пытаюсь получить прототип объекта, но на выходе получаю во второй форме : , видимо, использую не...

Создать объект прототип робота, который изготовлен из определенного материала, имеет имя, пол, оружие, умеет стрелять, здороваться и прощаться
Задачу я более-менее поняла, но как сделать, чтобы робот умел стрелять? ... Покажите пожалуйста в коде .. ))

Прототип не имеет соответствия в классе
Реализую класс список Вообщем возникла проблема, не могу исправить ошибку, на которую указывает компилятор #ifndef TLIST_H ...

2
250 / 184 / 58
Регистрация: 12.03.2021
Сообщений: 1,043
05.04.2022, 16:32
в 1м случае у вас не находит поля obj в объекте obj (поле name есть, obj - значение).
во-втором вы пытаетесь вызывать через console.log объект, а это не тот тип данных, для которого предназначена команда. в официальной документации есть пометка:

Логирование объектов
Не используйте console.log(obj);,
Используйте console.log(JSON.parse(JSON.stringify(ob j)));.
Так вы можете быть уверены, что видите значение obj в момент, его логирования.
0
2 / 2 / 0
Регистрация: 04.07.2019
Сообщений: 16
05.04.2022, 18:29  [ТС]
Цитата Сообщение от Splaisto Посмотреть сообщение
в официальной документации есть пометка:
Логирование объектов
Не используйте console.log(obj);,
Используйте console.log(JSON.parse(JSON.stringify(ob j)));.
Так вы можете быть уверены, что видите значение obj в момент, его логирования.
Думаю, Вы ошибаетесь.
Действительно, console.log работает с объектами не логично, он выводит в консоль ССЫЛКУ на текущее состояние объекта (т.е. на конечный момент выполнения скрипта, а не на момент вывода в консоль). И поэтому нужно сначала разобрать объект в строку, а потом собрать, для того, чтобы мы фактически получили новый объект (один из способов клонировать объекты). Но во-первых, этот косяк остался только в хроме, в мозиле его убрали (я запустил код из ссылки в мозиле, и там все ок). А во-вторых, это не имеет никакого отношения к моему примеру. Я ничего в объекте не менял после вывода в консоль. Если Вы запустите код из первого поста как console.log(obj) и как console.log(JSON.parse(JSON.stringify(ob j))), то увидите, что он выводит одно и то же. Там все равно будет этот дополнительный промежуточный объект.
Цитата Сообщение от Splaisto Посмотреть сообщение
в 1м случае у вас не находит поля obj в объекте obj (поле name есть, obj - значение).
А эту фразу я не понял, откровенно говоря.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2022, 18:29
Помогаю со студенческими работами здесь

разработать метод, прототип которого имеет вид: int F()
Во входном потоке задана прямоугольная матрица A размером n x m, состоящая из элементов a. Где n - количество строк, m - количество...

Почему у меня для использования функций cstring не нужно включать прототип библиотеки
Я недавно начал осваивать с++ с помощью учебника и там по ходу главы создается тренировочный класс String для работы со строками и в нем...

прототип
Вот пример метода Element.prototype.classListe = function(){ var self = this; this.result = new ClassList(self); return...

Прототип
У меня суперкласс Musicalinstrument и подклассы wind/stringed/shock, как здесь можно реализовать прототип копирования? Пробовал и даже...

Прототип
Здравствуйте, Можно ли как-то оптимизировать данный код? //---------------------------------------------------------------------- ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru