Javascript _uuuproto_uuuaccessor属性如何操作'hidden'[[prototype]]属性?我们可以看到它使用的代码吗?

Javascript _uuuproto_uuuaccessor属性如何操作'hidden'[[prototype]]属性?我们可以看到它使用的代码吗?,javascript,Javascript,我知道,proto不推荐在代码中使用。然而,Chrome控制台仍然使用_proto _;来显示非“自有”属性的属性,这对我来说很有帮助 这说明对象具有一个名为[[prototype]]的“隐藏的特殊”属性,该属性返回一个称为“prototype”或null的对象 它还声明_proto__是一个访问器属性,返回并可以修改这个[[prototype]]属性 尽管访问器属性没有值,所以我觉得Chrome显示的_uproto_uuu就好像指向一个对象一样奇怪 基于此,我能猜到在{}中存在一个隐藏属性[[

我知道,proto不推荐在代码中使用。然而,Chrome控制台仍然使用_proto _;来显示非“自有”属性的属性,这对我来说很有帮助

这说明对象具有一个名为[[prototype]]的“隐藏的特殊”属性,该属性返回一个称为“prototype”或null的对象

它还声明_proto__是一个访问器属性,返回并可以修改这个[[prototype]]属性

尽管访问器属性没有值,所以我觉得Chrome显示的_uproto_uuu就好像指向一个对象一样奇怪

基于此,我能猜到在{}中存在一个隐藏属性[[prototype]],它指向一个包含|指向object.prototype的点的对象吗

我们对这个隐藏属性的访问是通过_proto__访问器属性进行的

如果我想了解更多这方面的工作原理,有什么建议吗

最后,作为面向JavaScript对象的程序员,是否有必要知道_proto__访问器属性如何操作原型对象?我似乎对这件事知道得不多,却过得去

虽然访问器属性没有值,所以我觉得Chrome显示proto时好像指向一个对象,这很奇怪

访问器返回的值指向对象。但更重要的是,Chrome根本没有使用这个属性;它只是用它来向你展示物体的原型。它甚至向您展示了,对于不从Object.prototype继承的对象,因此没有_proto__访问器。例如:

//没有原型的物体 const noProto=Object.createnull; console.lognoProto; //具有原型的对象,但不是继承自object.prototype的对象: const obj=Object.createnoProto; console.logobj; //“obj”根本没有“proto” obj中的console.log__proto__;//错误的 //通常,对象会:
{};//确实,我知道uuu proto_uuuu在代码中不推荐使用。-您还了解Object.create、Object.getPrototypeOf和Object.setPrototypeOf?但是Chrome控制台仍然使用_uproto__;来显示非“自有”属性的属性,这看起来对我很有帮助。-嗯,他们可以使用任何指示器来显示,即使他们没有。Firefox确实如此。我学到的第一点是,Chrome在对象中出现的“原型”并不代表任何真正的JS代码。它只是一个Chrome的东西,向你展示了该对象的“隐藏的、特殊的”原型属性。第二,你是说存在Object.prototype.\uuu proto\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。他们可能从标准化之前就开始这么做了,并且没有改变它。更改它可能会很尴尬,因为您可以有一个名为[[Prototype]]的属性。。。所以我们在这个只有一点奇怪的地方,它用这个标签来表示[[Prototype]],而不是实际的_proto_____________________________________________?是的,你可以。如果键入console.logObject.prototype;,Chrome会向你展示很多东西,包括get _proto和set _proto。它没有显示uuu proto uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。您还可以使用console.logObject.getOwnPropertyDescriptorObject.prototype、\uuuuu proto\uuuuuuu;查看访问器属性的定义代码。