Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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.getPrototypeOf(instance.constructor)不等于instance.constructor.prototype?_Javascript_Ecmascript 6_Prototype - Fatal编程技术网

Javascript 为什么Object.getPrototypeOf(instance.constructor)不等于instance.constructor.prototype?

Javascript 为什么Object.getPrototypeOf(instance.constructor)不等于instance.constructor.prototype?,javascript,ecmascript-6,prototype,Javascript,Ecmascript 6,Prototype,标题说明了一切,但代码如下: class A {} class B extends A {} const b = new B() Object.getPrototypeOf(b.constructor) === b.constructor.prototype // false Object.getPrototypeOf(b.constructor) === A // true b.constructor.prototype === A // false. why? 我的意思是,上面的代

标题说明了一切,但代码如下:

class A {}
class B extends A {}

const b = new B()


Object.getPrototypeOf(b.constructor) === b.constructor.prototype // false

Object.getPrototypeOf(b.constructor) === A // true
b.constructor.prototype === A // false. why?
我的意思是,上面的代码是违反直觉的。为什么要这样做

\uuuu proto\uuu
prototype
不一样

假设您有一个对象
obj
。现在,
obj.prototype
实际上不会像您预期的那样为您提供
obj
的原型。要获得
obj
的原型,您必须执行
obj.\uuuu proto\uuuu
。运行以下代码,您将得到答案。另外,请阅读以了解有关
\uuuu proto\uuu
prototype
之间差异的更多信息:)

class A{}
类B扩展了{}
常数b=新的b()
console.log(Object.getPrototypeOf(b.constructor)==b.constructor.\uuu proto\uuuu)//true
console.log(Object.getPrototypeOf(b.constructor)==A)//true
console.log(b.constructor.\uuu proto\uuu==A)//true
在代码中:

b.constructor.prototype === A; // false
这是错误的,因为b的原型是A的原型,而不是A本身。这听起来可能让人困惑,所以我在下面留下了一个例子:

class A{}
类B扩展了{}
常数b=新的b()
Object.getPrototypeOf(b.constructor)==b.constructor.prototype//false
Object.getPrototypeOf(b.constructor)==A//true
b、 constructor.prototype==A//false。为什么?

console.dir(b.constructor.uuu proto_uuu==A);//真的
谢谢你的链接
Object.getPrototypeOf
不仅仅访问
.prototype
属性,它还获取从HMM继承的对象的内部链接。。你回答的第一行立刻让我觉得自己像个白痴,因为这太明显了。。。谢谢大家!
Object.getPrototypeOf
\uuu-prototypeof(obj)
获得
obj的原型是一样的,你必须做
obj.\uuu-prototypeof
”-不,你必须做
Object.getPrototypeOf(obj)
@CertainPerformance不,不是
\uuuu proto\uuuu
已被弃用,甚至不能在所有对象上运行。