在上一讲中,我们简单提到过 prototype 这一抽象化概念,那么在本讲中,我们来具体看一下到底什么是prototype原型,什么是原型链以及大家经常会遇到的问题之prototype/__proto__区别......blablaba
首先,需要大家明确一个概念 :
任意一个函数(包括构造函数)都有一个prototype属性,指向该函数的原型对象
任意一个构造函数实例化的对象,都有一个__proto__属性,指向构造函数的原型对象。
换言之:
每个构造函数(constructor)都有一个原型对象(prototype),
原型对象都包含一个指向构造函数的指针,
而实例(instance)都包含一个指向原型对象的内部指针.
看到这里,是不是有那么一点点绕~~ 下面上代码:
---------------------------------------------------------- 一条分割线,千军万马来相见 (#_ #) ---------------------------------------------------------
function Father(){ this.property = true; } Father.prototype.getFatherValue = function(){ return this.property; } function Son(){ this.sonProperty = false; } // //继承 Father Son.prototype = new Father();//Son.prototype被重写,导致Son.prototype.constructor也一同被重写 Son.prototype.getSonVaule = function(){ return this.sonProperty; } var instance = new Son(); alert(instance.getFatherValue());//true