Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Object.prototype不设置对象的值?_Javascript_Object_Typeof - Fatal编程技术网

Javascript 为什么Object.prototype不设置对象的值?

Javascript 为什么Object.prototype不设置对象的值?,javascript,object,typeof,Javascript,Object,Typeof,当我在我的网络浏览器中玩javascript时,我发现了一些奇怪的东西。 我定义了一个类TestClass,如下所示: class TestClass{}; var testObj=new TestClass(); Object.setPrototypeOf(testObj, null); 当我console.loged testObj时,没有属性 这就是我感到困惑的地方。 typeof testObj返回的“对象”。但当我运行以下命令时: Object.prototype.testPrope

当我在我的网络浏览器中玩javascript时,我发现了一些奇怪的东西。
我定义了一个类TestClass,如下所示:

class TestClass{};
var testObj=new TestClass();
Object.setPrototypeOf(testObj, null);
当我
console.log
ed testObj时,没有属性

这就是我感到困惑的地方。
typeof testObj
返回的
“对象”
。但当我运行以下命令时:

Object.prototype.testProperty='testing';
testObj
没有属性
testProperty
,尽管我已经为所有对象定义了它,并且根据
typeof
testObj
是一个对象

为什么会这样?不是所有的值都从
对象继承属性吗

这也适用于
[[Scopes]]
对象。在chrome中,我
console.log
一个函数,并将其
[[Scopes]]]
属性保存为全局变量时,
typeof
返回
“object”
,但全局变量没有属性
testProperty

不是所有的值都从
对象继承属性吗

不是。大多数对象继承自
对象.prototype
,但有些对象不喜欢
对象.prototype
对象本身。还包括原型显式设置为
null
的对象,如在代码中创建的
testObj
对象或
对象。创建(null)
。其他情况是来自不同领域的对象,它们继承自不同的
对象。prototype
对象

不是所有的值都从
对象继承属性吗


不是。大多数对象继承自
对象.prototype
,但有些对象不喜欢
对象.prototype
对象本身。还包括原型显式设置为
null
的对象,如在代码中创建的
testObj
对象或
对象。创建(null)
。其他情况是来自不同领域的对象,它们继承自不同的
对象。prototype
对象。

您从
testObj
中删除了prototype。它不再从任何地方“继承”任何东西,因为原型链是空的(好吧,
null
但是相同的东西)。而且
typeof x//“object”
也不意味着它从对象原型继承。它只是意味着它是一个对象,就是这样。继承是基于原型链接的,所以如果你删除了它,为什么你仍然期望继承呢
typeof
与继承无关。您需要检查
instanceof
。您从
testObj
中删除了原型。它不再从任何地方“继承”任何东西,因为原型链是空的(好吧,
null
但是相同的东西)。而且
typeof x//“object”
也不意味着它从对象原型继承。它只是意味着它是一个对象,就是这样。继承是基于原型链接的,所以如果你删除了它,为什么你仍然期望继承呢
typeof
与继承无关。您需要检查
instanceof