如果你是 JavaScript
开发人员,你可能遇到过“原型”这个词。但是你遇到过“_proto_”吗?如果是,有没有想过它们有什么区别?如果没有,让我来告诉你。
prototype
它是一个包含某些属性和方法的对象,默认情况下,JS
会自动将其与 JavaScript
代码中创建的对象(请记住,函数、日期、数组等都被视为对象)相关联。
原型就像构造函数(创建新对象的函数)的蓝图,其中包含所有实例(该类构造函数生成的对象)应继承的所有功能。
简而言之,它是一个包含类构造函数的各种属性和方法的主蓝图,并且从该构造函数创建的每个对象都将继承这些属性和方法。
现在的问题是,如何访问该对象(由构造函数创建)继承的那些方法和属性?是的!通过“__proto__”对象。
__proto__
它是一个指向其创建原型的对象。因此,“proto”现在是该特定对象的原型。
例如,如果你使用新的 Array
构造函数创建一个数组,则该数组的 __proto__ 将指向 Array
构造函数的原型,并且由于数组在 JS
中也被视为对象,因此 Array
构造函数的 __proto__ 将指向 Object
构造函数的原型。Object
构造函数的原型是主蓝图,其原型不指向某个地方(将返回 null
)