Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。
每一个对象都有原型,在浏览器中它体现在一个 proto的内置属性上。 当一个对象需要调用某个方法时,它回去最近的原型上查找该方法,如果没有找到,它会再次往下继续查找。这样逐级查找,一直找到了要找的方法。 这些查找的原型构成了该对象的原型链条。原型最后指向的是null。
我们说的原型继承,就是将父对像的方法给子类的原型。子类的构造函数中不拥有这些方法和属性。
例子:
var person = function () {} person.prototype.getName = function (k) {} var student = new person {} student.getName('Jan')
1.函数a有个内置属性 -- proto
2.属性proto的作用是 指向创建它的函数对象(创建函数a的函数对象 -- person)的prototype
3.因此,函数a.proto == person.prototype
( 父亲 会吃喝拉撒(属性),还会骑单车、玩游戏(方法),将来想传承给儿子们(prototype)。生了个大儿子,他通过(proto)继承了父亲的传承。)
抽象、封装、继承、多态