首页 > 代码库 > js(4) 继承与原型链
js(4) 继承与原型链
一:使用原型链来实现继承
在介绍原型链之前,要引入构造函数,原型,和实例的关系
构造函数都有一个原型对象,在原型对象中存在一个指向构造函数的指针(constructor),在实例中包含一个指向原型对象的内部指针(prototype)
构建原型链的原理是让一个类型的原型对象等于另一个类型的实例
当使用new 操作符构造实例的时候,实例会拥有构造函数原型中的属性和方法
实现代码如下:
function SuperType(){ this.property=true; }
//在SuperType的原型上定义了getSuperValue方法 SuperType.prototype.getSuperValue=http://www.mamicode.com/function(){>//让SubType.prototype等于SuperType的实例 SubType.prototype=new SuperType(); SubType.prototype.getSubValue=http://www.mamicode.com/function(){>
继承实现的本质是重写原型对象,代之以一个新类型的实例
二:使用构造函数
这种方法的原理是在子类型构造函数的内部调用超类型构造函数,通过call()或者apply()方法
function SuperType(){ this.colors=["red","blue","green"] }
function SubType(){
SuperType.call(this);
}
var insance1=new SubType();
instance1.colors.push("black");
alert(instancel.colors) //"red blue green black"
var instance2=new Subtype();
alert(instance2.colors)//"red blue green"
使用 call()方法或者 apply()方法,在将来要创建的SubType实例的环境下调用了superType()函数
因为对于call()和apply()方法实际上改变了this的值,对于call或者apply有什么区别呢?
js(4) 继承与原型链
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。