【发布时间】:2020-01-18 18:47:52
【问题描述】:
当我发现一些奇怪的东西时,我正在我的网络浏览器中使用 javascript。
我像这样定义了一个类 TestClass:
class TestClass{};
var testObj=new TestClass();
Object.setPrototypeOf(testObj, null);
当我console.loged testObj 时,没有任何属性。
这就是我感到困惑的地方。typeof testObj 返回了"object"。但是当我运行以下命令时:
Object.prototype.testProperty='testing';
testObj 没有属性testProperty,尽管我已经为所有对象定义了它并且根据typeof,testObj 是一个对象。
为什么会这样?不是所有值都从Object 继承属性吗?
[[Scopes]] 对象也会发生这种情况。当我在 chrome 中 console.log 一个函数并将其 [[Scopes]] 属性保存为全局变量时,typeof 返回 "object" 但全局变量没有属性 testProperty。
【问题讨论】:
-
你从
testObj删除原型。它不再从任何地方“继承”任何东西,因为原型链是空的(嗯,null但同样的事情)。 -
另外
typeof x //"object"并不意味着它继承 Object 原型。它只是意味着它是一个对象,就是这样。 -
继承是基于原型链接的,如果去掉了,为什么还要继承呢?
typeof与继承无关。您需要与instanceof联系。
标签: javascript object typeof