Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。
每一个对象都有原型,在浏览器中它体现在一个proto的内置属性上。
当一个对象需要调用某个方法时,它回去最近的原型上查找该方法,如果没有找到,它会再次往下继续查找。这样逐级查找,一直找到了要找的方法。 这些查找的原型构成了该对象的原型链条。原型最后指向的是null。
当一个对象需要调用某个方法时,它回去最近的原型上查找该方法,如果没有找到,它会再次往下继续查找。这样逐级查找,一直找到了要找的方法。 这些查找的原型构成了该对象的原型链条。原型最后指向的是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