Я играл с 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
.