Почему Object.prototype не устанавливает значение объекта? - PullRequest
0 голосов
/ 18 января 2020

Я играл с javascript в своем веб-браузере, когда заметил что-то странное.
Я определил класс TestClass следующим образом:

class TestClass{};
var testObj=new TestClass();
Object.setPrototypeOf(testObj, null);

Когда я console.log ed testObj, свойств не было.

Вот где я запутался.
typeof testObj вернул "object". Но когда я запустил следующее:

Object.prototype.testProperty='testing';

testObj не имел свойства testProperty, хотя я определил его для всех объектов и согласно typeof, testObj было объект.

Почему это происходит? Разве все значения не наследуют свойства от Object?

Это также происходит для [[Scopes]] объектов. Когда в chrome, я console.log функция и я сохраняю ее свойство [[Scopes]] в качестве глобальной переменной, typeof возвращает "object", но глобальная переменная не имеет свойства testProperty.

1 Ответ

1 голос
/ 18 января 2020

Не все значения наследуют свойства от Object?

Нет. Большинство объектов наследуются от Object.prototype, но некоторые не - как сам объект Object.prototype. Также объекты, прототип которых был явно установлен на null, например testObj тот, который вы создали в своем коде, или Object.create(null). Другие случаи - это объекты из разных областей, которые наследуются от другого Object.prototype объекта.

...