学习《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;这些都有在上面的代码验证,两个弹窗

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值