duc*_*cin 5 javascript prototype
我一直在阅读有关 javascript 原型链接的内容,据我了解,有一个全局变量Object.prototype是其他原型的基础,例如Array.prototype,它可以是另一个原型的基础。就像基于类的 OOP 中的继承一样。没关系。
现在,我想检查和比较不同对象的原型。如果Array的原型是基于 的Object.prototype,我想类似的事情Array.prototype.prototype应该是可能的。但它是未定义的:
> Array.prototype.prototype
undefined
Run Code Online (Sandbox Code Playgroud)
当我输入__proto__而不是 时prototype,我得到:
> Array.__proto__
[Function: Empty]
> Object.__proto__
[Function: Empty]
> Array.__proto__.__proto__
{}
Run Code Online (Sandbox Code Playgroud)
(控制台输出取自nodejs)。我有以下问题:
prototype和 和有什么不一样__proto__?我相信您正在寻找:
\n\nObject.getPrototypeOf(Array.prototype);\n// The same as Object.prototype\nRun Code Online (Sandbox Code Playgroud)\n\n(这是ES5的功能,不兼容一些旧的浏览器)。
\n\n\n\n\n原型和 __proto__ 有什么区别
\n
该prototype属性始终属于构造函数(如Object、Array和自定义构造函数)。该__proto__属性存在于使用此类构造函数创建的实例上,并指向与 constructor.prototype 相同的对象。
例如:
\n\nfunction MyClass(){}\nvar myObj = new MyClass();\nmyObj.__proto__ === MyClass.prototype; // true\nRun Code Online (Sandbox Code Playgroud)\n\n在您给出的示例中,Array.__proto__实际上是构造函数 \xe2\x80\x93 的原型对象而不是其prototype属性。这就是为什么它是[Function: Empty],因为它Array是一个函数,是默认Function构造函数的一个实例。某些特定数组实例__proto__的 与以下相同Array.prototype:
var arr = [];\narr.__proto__ === Array.prototype; // true\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
5774 次 |
| 最近记录: |