什么是原型?
在JavaScript中,原型(prototype)是一个对象,用于存储其他对象继承它的属性和方法。每个JavaScript对象都具有一个指向其原型的内部链接,它可以从其原型继承属性和方法。通常,当您尝试访问对象的属性或方法时,如果该对象本身没有该属性或方法,则会在其原型上查找该属性或方法。这使得原型成为实现继承和代码重用概念的重要方式。
在对象中存在的原型称为隐式原型
在函数中存在的原型称为显式原型
显式原型和隐式原型的区别?
在Javascript中,每个对象都有一个隐式原型 (proto) 属性和一个显式原型 (prototype) 属性。
其中,显式原型是通过构造函数的 .prototype
属性创建的,它是一个指向包含该构造函数原型属性和方法的对象的指针。
隐式原型是实例化对象时,自动指向构造函数的原型prototype属性(即其显式原型)的指针。
什么是原型链?
原型链是指在对象中通过prototype 不断寻找属性的链条, 在本身没有找到就会不断地沿着原型链往父级对象查找形成一条原型链,从而实现继承
继承的ES5历史
-
通过直接将父类的显式原型赋给子类
问题:会使得父子的显式原型都是同一个,改一个动全部 -
通过创建父类的实例对象,通过这个对象来实现继承
问题:会多次调用函数 -
子类对象的隐式原型直接指向父类的新建对象