javascript基于原型链的继承_javascript技巧

javascript基于原型链的继承_javascript技巧

ID:30777590

大小:173.77 KB

页数:6页

时间:2019-01-03

javascript基于原型链的继承_javascript技巧_第1页
javascript基于原型链的继承_javascript技巧_第2页
javascript基于原型链的继承_javascript技巧_第3页
javascript基于原型链的继承_javascript技巧_第4页
javascript基于原型链的继承_javascript技巧_第5页
资源描述:

《javascript基于原型链的继承_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JavaScript基于原型链的继承Javascript并不是一门面向对象的语言,没有提供传统的继承方式,但是它提供了一种原型继承的方式,利用自身提供的原型属性来实现继承。原型链是JavaScript中继承的主要方法。原型链的基本思想是:利用原型让一个引用类型继乐另一个引用类型的属性和方法。构造函数、原型和实例的关系:每个构造函数都有一个原型对彖,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。如果让原型对象等于另一个对象的实例,这样原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。实现原型链

2、的基本模式:functionSuperType(){this.property=true;}SuperType.prototype,getSuperValue=function(){returnthis.proper、ty;};functionSubType(){this・subproperty=false;}//继承SuperTypeSubType.prototype=newSuperType();SubType.prototype.getSubValue=function(){returnthis・subproperty;};varinstance二newSubTy

3、pe();alert(instanee.getSuperValueO);//trueSubTypc继承了SuperType,继承是通过创建SuperType的实例,并将该实例赋给SubTypc.prototype实现的。实现的木质是重写原型对象,换成一个新类型的实例。这样,原来存在于SuperType的实例屮的屈性和方法,也存在与SubType,prototype中了。然后给SubType,prototype添加一个方法,这样就继承了SuperType的属性和方法的基础上又添加了一个方法。匕例中的实例关系表示如下:SuperTypeprototype•SuperType

4、Prototypeconstructor•getSuperValue(function)SubTypePrototype[[prototype]]•propertytruegetSubValue(function)instance[[Prototype]]•subpropertyfalseSubTypgprototype•上面没有使用SubType默认提供的原型,而是给它换了一个新原型;这个新原型就是SuperType的实例。新原型内部述有一个执行SuperType的原型的指针。结果变成了instance指向SubType的原型,SubType的原型乂指向SuperTy

5、pe的原型。getValue()方法仍然还在SuperType,prototype中,但prototype则位于SubType,prototype中。这是因为property是一个实例属性,而getSuperValueO则是一个原型方法。既然SubType,prototype现在是SuperType的实例,那么property自然位于该实例小。注意:instance,constructor现在指向的是SuperType,因为SubType的原型指向了另一个对彖SuperType的原型,这个原型对彖的constructor属性指向的是SuperTypeo当以读取模式访问一

6、个属性时,首先会在实例中搜索该属性。如果没冇找到该属性。则会继续搜索实例的原型。通过原型链实现继承的情况F,搜索过程就得以沿着原型链继续向上。默认的原型所有引用类型都默认继承了Object,而这个继承也是通过原型链实现的。所有函数的默认原型都是Object的实例。因此默认原型都会包含一个内部指针,指向Object,prototypco这就是为什么白定义类型都会继承toString()、valucOf()等方法的原因。完整的原型链:SubTypeSubTypePrototypeprototype

7、•[[Prototype]]•propertytruegetSubValue

8、(function)instance[Prototype]]•subpropertyfalse在上面的继承体系中,SubType继承了SuperType,SuperType继承了Object。当调用了instance.toStringO时,实际调用的是保存在Object,prototype中的那个方法。确定实例和原型的关系可以通过两种方式来确定原型和实例之间的关系:使用instanceof操作符alcrt(instanceinsteinccofObjcct);alert(instanceinstanceofSuperType);alert

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。