理解__proto__和prototype
本文只帮助本人理解__proto__和prototype。
以下均为本人通过deepseek和网上搜索总结而出,不保证知识点的准确性,只是帮助本人理解。
类与对象 vs 对象与对象
在之前接触的语言(C++、java、python等)中,基本都是类与对象的概念
通过定义一个类作为模板,通过new来实例化一个对象,继承等操作也是在类上进行的
在js中,没有类的概念,除了原始类型外,其他都可视为对象
1 | |
js中的对象
js中想要创建一个对象,只能通过另一个对象来创建,这另一个对象通常为构造函数
1 | |
js里的对象可以视作一些属性(字段)的集合
任何对象都可以拥有属于自己的任意属性
通过构造函数创建的对象独自拥有构造函数中的属性
1 | |
原型
我对原型现在还不是很了解,只当“黑盒”来用
如上所说,js中的对象需要由另一个对象创建,而这另一个对象就被称为该对象的原型。
而每个对象都有一个__proto__属性,该属性就指向此对象的原型。
既然原型也是一个对象,那么就有原型的原型,一直往上,直到最顶层为null(可能这就是为什么null的类型为object了吧),这就是原型链。类似于其他语言的类中的继承,js中的对象也有继承,依次继承原型中的属性。
__proto__和prototype
原型并不是这个另一个对象(原构造函数),而是独立出来的一个对象,称为原型对象,存储着共享属性,可被继承
实例对象通过__proto__访问原型
构造函数通过prototype访问原型
1 | |
理解__proto__和prototype
http://example.com/2026/01/05/proto/