学习《javascript高级程序设计》笔记——继承的基本模式

实现原型链的一种基本模式,其代码大致如下:

function SuperType() { 
		this.property = true;
	}
	SuperType.prototype.getSuperValue = function() { 
		return this.property;
	};
	function SubType() { 
		this.subproperty = false;
	}

	//继承了SuperType
	SubType.prototype = new SuperType();
	SubType.prototype.getSubValue = function() { 
		return this.subproperty;
	};

	var instance = new SubType();
	alert(instance.getSuperValue());      //true
	
	//检验instance实例是否拥有property属性
	alert(instance.hasOwnProperty("property"));//false

	//其实property属性存在于SubTyped的原型中,下面检验
	function hasPrototypeProperty(object,name) { 
		return !object.hasOwnProperty(name) && (name in object);
	}
	alert(hasPrototypeProperty(instance,"property")); //true
以上代码定义了两个类型:SuperType和SubType,每个类型分别有一个属性和方法。他们主要区别是SubType继承了SuperType,而继承是通过创建SuperType的实例,并将该实例赋给SubType.prototype实现的。实现的本质是重写原型对象,代之以一个新类型的实例。所以说SubType Prototype已经成为SuperType的实例,发生的变化是:下图红色标示【1】证明SubType Prototype 成为对象实例,【2】表明它继承了SuperType的属性property;这些都有在上面的代码验证,两个弹窗

学习《javascript高级程序设计》笔记——继承的基本模式_第1张图片

上图画出了代码实现后,对象实例,构造函数,对象原型之间的关系

你可能感兴趣的:(学习《javascript高级程序设计》笔记——继承的基本模式)