本文说明了JavaScript继承和聚合。分享给大家参考,如下:
一.继承
第一种方式:类和继承类之间的直接耦合度高
1.首先,准备一个可以继承的类(父类),例如
//创建Person类函数Person(name) {//现在Person中的域由这个Person控制。name=name}2.然后,有一个子类需要继承父类
函数教师(姓名,书籍){ Person.call(此,姓名);//相当于java中的超级函数,初始化Person的名字当新老师。书籍=书籍;}解释:
(1)call方法可以将函数的对象上下文从初始化更改为这个,以决定一个类控制另一个类
(2)教师类控制人员类,并在教师字段中使用它来控制人员字段中的人员类
(3)调用Perosn的构造函数,因为Perosn是一个空对象(模板),因为它不使用new。调用调用方法并初始化Person。
3.最后,实现继承
(第一步)先继承
teacher . prototype=new Person();教师.原型.构造者=教师;//确保继承后仍然是老师自己的构造函数(步骤2)。扩展子类的一些方法来访问从父类继承的内容
teacher . prototype . getbook=function(){ return this . name ' ' this . books;}(步骤3)使用继承的类
var jim=新老师(' jim ',' Javascript ');Alert(jim.getBook())总结这个方法直接在子类中显示调用的父类,耦合度高,复用性差。
第二种方法是使用封装来完成程序中使用的继承操作
1.首先,准备一个可以继承的类(父类),例如
//创建Person类函数Person(name) {//现在Person中的域由这个控制,name=Person中的名称;}2.为程序中的所有继承操作创建扩展函数(最重要的地方)
/*创建extend函数,为程序中所有继承操作初始化一个中间空对象*///subclass : super class:super class(2)函数extend (subclass,superclass) {//1,使子类的prototype属性等于父类//的prototype属性,以便变换父子关系var F=function(){ };f . prototype=SupClass . prototype;//2、让子类继承F subclass . prototype=new F();子类. prototype.constructor=子类;//3、添加属性superClass=="引用子类。超类=超类。子类的原型;//4、添加一个保险,即使你的原型类是超类(Object),那么你也要降低你的构造器级别【解释一些:这只是简单的保险之一,其他情况后面会添加。】if(super class . prototype . constructor==object . prototype . constructor){ super class . prototype . constructor=super class;}}3.有一个子类需要从其他类继承
函数Author(name,books){ Author . superclass . constructor . call(this,name);//不直接写父类,降低了耦合度。//Person.call(this,name)直接写Person表示其构造函数this.books=booksthis . getbooks=function(){ return this . name ' ' this . books;}}4.最后,实现继承
//继承扩展(作者、人物);//(子类,父类)5。使用继承的类
var peter=新作者(' peter ',' Javascript ');alert(Peter . GetBooks());模式2如下所示:
这里可能会有一个问题:为什么要用中间类?
如果这里没有中间类,那么在实例化子类的时候,我们需要给父类传递一些对应的参数。在这种情况下,代码
author . superclass . constructor . call(this,name);不能放在子类(Author)中,需要放在extend中。在这种情况下,代码的通用性很低,所以需要使用中间类。
第二,聚合
使用聚合的原因是有时我们不需要严格的继承。我们真正需要的是一个类(或者几个类)中的一些函数。因此,我们可以使用聚集,即使用掺杂剂类别
聚合有两种情况
第一种方法是聚合成一个var为a={}的空类或一个没有用函数声明的类
1.首先,我们需要一个合适的可以聚合的类(施主)。此时,我们需要扩展这个类内部的属性和方法
Var JSON={//写入内部tojsonstring :函数(){ var output=[];For(此处键入){//这表示该调用,并指向该对象输出。按(键'-'这个[键]);}返回输出;}};2.创建聚合函数(最重要)
/*聚合函数receiving class:class giving class接收聚合内容:聚合目标类* */functionmixin(receiving class,giving class){ for(giving class中的方法名){if(!正在接收课程。_ _ proto _ _[method name]){//确定当前原型是否包含要聚合的方法,如果不包含,将其聚合到receivingclass中。_ _ proto _ _ [methodname]=给出类[method name];//直接获取类中的方法,因为方法直接写在方法内部。} }}3.接受聚合的类(受体)
var get={name:'Text ',age :20 };4.将JSON类方法聚合到类get中
mixin(get,JSON);//(受体,供体)5。在get类中使用聚合方法
document . write(get . TojsonString()。join(',');第二种是聚合用函数声明的类
Var a=function(){}1。首先,我们需要一个合适的可以聚合的类(施主)。此时,我们需要在这个类的原型对象上扩展属性和方法
var JSON={ };JSON.prototype={//在类的原型对象上写入to JSON string 3360 function(){ varoutput=[];For(此处键入){//这表示该调用,并指向该对象输出。按(键'-'这个[键]);}返回输出;}}2.生成聚合函数
(2)创建聚合函数(接收类中的聚合类中的属性或方法)
函数mixin(receivingClass,giving class){ for(giving class . prototype中的methodName in(!正在接收课程。prototype[method name]){//确定当前原型是否包含要聚合的方法,如果不包含,将其聚合到receivingclass中。原型[methodname]=给出类。原型[method name];} }}3.接受聚合的类(受体)
var o=function(){ this . name=' aggregate ';this.age=19}4.实现从JSON类到O类的聚合(将JSON类中的方法聚合成O类)
mixin(o,JSON);//(受体,供体)5。在O类中使用聚合方法
var USeo=new o();document . write(UseO . TojsonString()。join(',');第二个图表被理解为:
这个方法属于o类上层的聚合。
有关JavaScript的更多信息,请查看本网站的专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》和《JavaScript数学运算用法总结》
希望本文对JavaScript编程有所帮助。