Как двигатель JavaScript обрабатывает идентичность объекта и прототип наследование между ShadowRealms и основным контексJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как двигатель JavaScript обрабатывает идентичность объекта и прототип наследование между ShadowRealms и основным контекс

Сообщение Anonymous »

Я экспериментирую с предложением Ecmascript для ShadowRealm и сталкивается с некоторым глубоко неинтуитивным поведением вокруг идентичности объекта, функциональных привязков и прототипа наследования в сферах. PrettyPrint-Override ">const realm = new ShadowRealm();

const fn = realm.evaluate(`
globalThis.shared = { x: 1 };
function getShared() { return shared; }
getShared;
`);

const objFromRealm = fn();

console.log(objFromRealm); // [object Object]
console.log(Object.getPrototypeOf(objFromRealm) === Object.prototype); // false
console.log(objFromRealm instanceof Object); // false
console.log(typeof objFromRealm); // 'object'
< /code>
Вопросы: < /p>

Почему объект возвращается из ShadowRealm, а не экземпляр объекта в основной области? Цепь? Двигатель когда-либо «обернуть» или «прокси» объекты для сохранения безопасности памяти? Я ожидал, что он будет вести себя как обычный объект - например, экземпляр объекта должен вернуть true, а прототип должен соответствовать объекту основного сферы. Прототип. Вместо этого я обнаружил, что объекты из ShadowRealm не распознаются как экземпляры объекта в основной области, а их прототипы цепочки полностью отделены. Это поведение, кажется, нарушает традиционные ожидания относительно идентификации объектов и типа, поэтому я пытаюсь понять, что на самом деле происходит за кулисами, и является ли это за дизайн или побочный эффект изоляции отсека.

Подробнее здесь: https://stackoverflow.com/questions/796 ... nheritance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»