理解js原型与原型链继承

浏览:2131 发布日期:2015-10-18 04:09

    每个函数都包含一个prototype属性,每个实例有一个[[Prototype]]属性,一般是无法访问到的,它指向对象构造函数的原型对象。

    使用原型链继承:

    function SuperType()

			{				this.property = true;			}						SuperType.prototype.getSuperValue = function ()			{				return this.property;			};						//子类			function SubType()			{				this.subproperty = false;			}						SubType.prototype = new SuperType();						SubType.prototype.getSubValue = function ()			{				return this.subproperty;			}						var su = new SuperType();			var instance = new SubType();

SubType的prototype指向一个SuperType的实例,那么SubType的实例便获得了SuperType的所有属性和方法,而因为又在SubType的prototype中定义了getSubValue方法,所以这个也变为SubType的实例方法,而property属性则是SubType原型的一个属性了。

原型链继承模式的问题在于如果父类包括引用类型属性,他会造成被所有实例共享。