网络编程
位置:首页>> 网络编程>> JavaScript>> javascript中类的创建和继承

javascript中类的创建和继承

作者:yring 来源:经典论坛 发布时间:2008-05-08 12:07:00 

标签:类,prototype,继承,javascript

类的定义

类定义有三种基本方法,

1、创建并能返回特定类型的对象的函数(工厂函数),例如:function Co(){ var o = new Object; o.a = 1 return o}; 用这种方式创建对象: var o = Co()

2、创建构造函数,用new 实例化,例如 function Co(){this.a = 1} 用这种方式创建对象:var o = new Co()

3、原型方式,利用对象的prototype属性,例如 function Co(){}; Co.prototype.a = 1; 用这种方式创建对象: var o = new Co()

可灵活运用这三种方式进行组合

类的继承

类的继承有两种基本方法

1、对象冒充 基本原理: 构造函数使用this关键字给所有属性和方法赋值(构造函数实际上仅仅是赋值函数),所以可以利用一种方式,在类内部直接运行赋值函数,把其this关键字传递给新类。例如:

var a = function(){   
    this.a = 1;   
    this.b = 2;   
    alert(this);   
}   
  
var b = function(){   
    this.aa = a;//对a中的this进行转换,同样的方式还有   
    this.aa();   
    delete this.aa;  //要把这个中间方法删除掉,否则可能会在以后的操作中覆盖原来类的方法   
  
    //或者   
    a.call(this,arg1,arg2);   
    //或者   
    a.apply(this,[args]);   
}   
  
var ob = new b();     
var a = function(){
    this.a = 1;
    this.b = 2;
    alert(this);
}
var b = function(){
    this.aa = a;//对a中的this进行转换,同样的方式还有
    this.aa();
    delete this.aa;  //要把这个中间方法删除掉,否则可能会在以后的操作中覆盖原来类的方法
    //或者
    a.call(this,arg1,arg2);
    //或者
    a.apply(this,[args]);
}
var ob = new b();    

2、原型链

基本原理:关于原型链,详见(http://www.javaeye.com/topic/53537)把超类的一个实例付给子类的prototype对象,即可把超类的固定属性和方法传递给子类,要注意一点,这种方法无法在实例化时传递参数,所以一般采用混合方式进行类的继承。

0
投稿

猜你喜欢

  • 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时
  • 虽然以前我写过IE6、IE7、IE8共存的解决方案,但是看到IETester这个软件以后那些都已经没有意义了(那些办法副作用比较大,而且实现
  • 代码如下:var obj = document.getElementById("name"
  • 如何用Response.Write调用代替内嵌表达式?我们可以利用下面的代码,注意:代码的每一行对响应流有一次写操作,所有的代码都包含在一个
  • 今天终于抽出时间瞟了一眼JavaScript的新标准ECMA262v5,让我欣喜的是,不像是因为过于激进而被废除的v4,这个新标准对Java
  • 原理:建一个栈,每次碰到一个新标签,就与栈顶的标签配对,如果配对,栈顶的标签就出栈,如果不配对,这个新标签就进栈,最终,栈如果是空的,说明所
  • 学习一些你已经知道的知识也没有什么坏处,是吧?我知道这可能并不一定非常有意义,但是很多时候我们往往知其然而不知其所以然,这会使得事情出现惊人
  • 在Windows环境下,经常遇到系统Over的情况,如果你在新装了系统和SQL Server 2005后,需要把SQL Server2000
  • 这是官方对SubFolders的介绍:返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合。object
  • 采集文章给建站带来了很大的方便,特别是一些小网站,人员有限,资金有限,适当的使用采集功能可以很快丰富我们的网站,采集这么厉害可能你会觉的代码
  • IE 浏览器中 CSS Expression 特性的最大的问题:会反复执行,每秒钟可能执行了成百上千次,有严重的性能问题。如何对 CSS E
  • (下面的代码原来我想用折叠的代码的,但是在google里面老是添加不了折叠的代码,所以就整屏的贴出来了,望大家不要见外。) 朋友的比较好的存
  • 在JavaScript开发中,被人问到:null与undefined到底有啥区别?一时间不好回答,特别是undefined,因为这涉及到un
  • 用JDBC实现对MySQL的“增删改查”:import java.sql.Connection;im
  • 以前写过《 10条影响CSS渲染速度的写法与建议》,今天放些数据出来,供参考;首先说明一点,CSS对网页的最后渲染出来的速度影响非
  • 有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情
  • 近日在月影的blog上找到一段代码。看了老半天没明白什么意思,倍受打击!不死心,于是仔细分析思考了好几次,才明白过来这段函数的意义。js果然
  • ASP实现语音分时问候,其实asp实现这个功能很容易,时间判断一下,在某个时间段就调用某个的背景语音。下面是源代码:  
  • 1、root函数格式root()功能描述返回一个路径串变量应用代码'sample string = c:\intels\jingca
  • 出自: 编程中国  http://www.bc-cn.net作者: 天涯听雨   &nbs
手机版 网络编程 asp之家 www.aspxhome.com