概念:一个对象可以访问另一个对象上的成员。在javascript,对象与对象之间是通过PRototype属性来实现成员和方法的共享(继承)。
function Animal(name){ this.name = name}Animal.prototype.eat=function(){ console.log(this.name + 'can eat other small animals .')}var animal1 = new Animal('snake')var animal2 = new Animal('tiger')animal1.eat===animal2.eat //true//animal1.eat和animal2.eat都指向 Animal.prototype.eat ,实现方法共享(继承)原型:就是函数的prototype属性所引用的对象 原型继承的原理:一个对象能够访问它的proto属性所指向的对象上的成员和方法(当然如果这个对象本身有它要访问的成员和方法,就不去它的proto属性所指向的对象上查找,逐级向上查找,直至null,则返回undefined)
var a = {}//继承关系:a -> Object.prototype ->null// a.hasOwnProperty 就是访问的Object.prototype上的hasOwnProperty方法。因为a本身并没有hasOwnProperty方法,而a.__proto__属性指向 Object.prototype ,且Object.prototype上有hasOwnProperty方法概念:从一个对象到Object.prototype之间存在一条体现继承层次关系的链式结构。 本质:链上的每一个对象都是通过proto属性连接起来的
...jsvar a = {};//原型链:a -> Object.prototype -> nullvar arr=[];//原型链:arr -> Array.prototype -> Object.prototype -> nullfunction Person(){}var p1 = new Person()//原型链:p1 -> Person.prototype -> Object.prototype -> null...新闻热点
疑难解答