`
liujunhg
  • 浏览: 29009 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript中类和继承(代码示例+prototype.js)

阅读更多
<html>
 <head>
  <title> New Document </title> 
    <script src="js/prototype.js" type="text/javascript"></script>
 </head>
 <script tupe="text/javascript">
//javascript中自带的创建类的方法   用这种方法是不可引用 prototype.js否则会冲突
var People=function(){
     this.name="";        //属性
     this.getName=function(){
       return "主人给我取名字了,我叫"+this.name+"。主人你希望我是个美女还是帅哥啊?";   //方法
     }
     this.say=function(){
        return "主人你好!我是你的机器人,编号为:"+Person.getNum()+".给我取个名字吧" 
     }
     this.sex="man"
     this.getSex=function(){
        return "我是一个"+this.sex;
     }     
}
People.num=0;      //静态属性
People.getNum=function(){          //静态方法
   People.num=People.num+1;    //用People或this都可
   return People.num;
}


//利用prototype.js来创建类
var Person = Class.create();    //通过Class.create方法创建空类    
//添加非静态属性和方法
/**方法一:*/
Person.prototype = {               //把方法定义到prototype中,注意,是通过initalize方法初始化类的属性    
   name:"name",
  initialize: function(name) {      //这是构造函数,必须实现且为非静态
    alert("正在初始有参数对象对象……")
    this.name = name;     
  },     
  say: function(message) {     
    return this.name + ': ' + message;     
  }     
}; 
/**方法二:
Object.extend(Person.prototype,{
    initialize: function() {   
	    alert("正在初始无参数对象……")
    
    },  
    email:"lkujhn@qq.com",
	getEmail:function (){
	    return this.email
	}
})
*/
//添加静态属性和方法
//方法一:
Object.extend(Person, {                          //扩展一些静态属性, 方法     
    qq : "103430585",   
    getQq : function(){return this.qq;}   
}); 
/**方法二:
Person.num=0;
Person.getNum=function() {
   Person.num=Person.num+1;   //用this.num也可
   return this.name+":"+Person.num;
}
*/

//继承
var PersonSon=Class.create();

//初始化子类,如不初始化,将无法创建新对象(当子类的非静态方法继承了父类的非静态的方法时,构造函数也继承,因此可不初始化)
/**
Object.extend(PersonSon.prototype,{
   name:"personson",
   initialize:function(name){
       this.name=name;
       alert(this.name+"初始子类PersonSon………………")
   }
})
**/
//继承形式1:(静态)继承父类的静态方法 ,继承后子类的该方法、属性依然是静态   
Object.extend(PersonSon,Person);
//继承形式2:(非静态)继承父类的静态方法,继承后子类的该方法、属性为非静态
Object.extend(PersonSon.prototype,Person);
//继承形式3:(静态)继承父类的非静态方法,继承后子类的该方法、属性为静态
Object.extend(PersonSon,Person.prototype)
//继承形式4:(非静态)继承父类的非静态方法,继承后子类的该方法、属性为非静态
Object.extend(PersonSon.prototype,Person.prototype)    //继承后子类的构造函数会被父类覆盖


function ceshi(){

    var pp=new People();   //创建对象
     //p.getNum()  //调用错误
     alert(People.getNum())     //调用静态方法
     t(p.say());     //调用普通方法
     pp.name="test"                //改变对象的属性
     alert(pp.getName());
     alert(pp.getSex());


/**
	var p=new Person("lj");   //创建对象
	//调用非静态方法
	alert(p.say("你好"));
    alert(p.getEmail());
	//调用静态方法
    alert(Person.getQq());  
	alert(Person.getNum());   //静态方法中无法访问非静态属性,此方法中的this.name是为undefined
*/


	var ps=new PersonSon("ljson");//创建子类

    alert("调用的子类静态方法继承父类的静态方法:"+PersonSon.getQq());

	alert("调用的子类非静态方法继承父类的静态方法:"+ps.getQq());

    alert("调用的子类静态方法继承父类的非静态方法:"+PersonSon.say("子类静态方法"));

	alert("调用的子类非静态方法继承父类的非静态方法:"+ps.say("子类非静态方法"));

	alert("非静态属性(父类中该属性为静态):"+ps.qq);

	alert("静态属性(父类中该属性为静态):" +PersonSon.qq)

	alert("非静态属性(父类中该属性为非静态):" +ps.name)    

	alert("静态属性(父类中该属性为非静态):" +PersonSon.name)    
}

</script>


 <body>
  <input type="button" value="机器人" onclick="ceshi()"/>
 </body>
</html>

 

0
1
分享到:
评论

相关推荐

    prototype.js简介

    在prototype.js 1.4版本中,用户可以查找特定的方法、属性和类,了解其用法和参数。这对于学习和使用该库非常有帮助。 3. **Noname1.html** - 这可能是一个示例或测试页面,用于展示如何在实际项目中使用prototype....

    prototype.js中文手册

    它在Web开发中扮演着重要的角色,尤其在AJAX(异步JavaScript和XML)应用中,Prototype.js 提供了丰富的功能和工具,使得开发者能更高效地编写JavaScript代码。 ### 一、Prototype.js核心特性 1. **DOM操作**:...

    prototype.js文件使用和讲解

    在JavaScript中,`prototype`是一个核心概念,它关乎对象的继承机制。`prototype.js`是一个开源库,旨在扩展JavaScript的基础功能,尤其是面向对象编程的支持。这个库由Sam Stephenson创建,是Prototype Library的一...

    prototype.js

    4. **对象操作**:Prototype.js引入了类(Class)的概念,支持类的创建、继承和实例化,如`Class.create()`和`Object.extend()`等方法,使得JavaScript具备了更强大的面向对象编程能力。 5. **数组和字符串扩展**:...

    prototype.js 1.6

    Prototype.js 的核心理念是扩展 JavaScript 的内建对象,提供类(Class)系统、DOM 操作、Ajax 支持和丰富的函数工具。通过这个库,开发者可以使用类似于面向对象编程的方式来编写 JavaScript,使得代码更加结构化和...

    prototype.js 1.4版开发者手册(强烈推荐)

    5. **类与继承**:Prototype.js引入了模拟类的概念,通过`Class.create`可以创建新的类,并使用`Object.extend`进行类的继承,从而实现了JavaScript中的面向对象编程。 6. **JSON支持**:1.4版中,Prototype.js提供...

    prototype.js.cn.doc.rar

    Prototype.js是一款强大的JavaScript库,由Sam Stephenson开发,旨在简化JavaScript的编程,提供了一系列实用的函数和类扩展,增强了JavaScript的基本功能。这款库的核心理念是通过类原型(Class Prototyping)实现...

    Prototype.js 1.6.0.3 及中文CHM帮助文档

    在这个文档中,你可以找到关于Prototype.js所有特性和方法的详细解释,包括如何使用、示例代码和注意事项,这对于初学者和经验丰富的开发者来说都是宝贵的参考资料。 使用Prototype.js可以提升JavaScript开发效率,...

    prototype.js开发者手册

    Prototype.js是开源的JavaScript框架,它扩展了JavaScript的基本对象,提供了类和面向对象编程的支持,以及一系列实用的DOM操作方法,极大地简化了JavaScript的开发工作。 Prototype.js的核心知识点包括: 1. **类...

    Prototype.js(v1.6)带中文chm手册

    同时,提到了"Prototype_v1.6.js",这是Prototype.js库的源代码文件,可能包含在压缩包中供开发者查看和学习。 **标签解析:** "prototype" 指的是Prototype.js,这个标签明确了讨论的主题。 "protoytpe.js" 可能...

    prototype.js开发手册

    - **类与继承**:Prototype.js 引入了基于原型的类系统,允许开发者创建类以及实现类之间的继承。`Class.create()`方法用于创建新类,而`extend()`方法则用于类的继承。 - **DOM 操作**:Prototype.js 提供了一系列...

    prototype.js源码及PDF文档

    总结来说,《prototype.js源码及PDF文档》是JavaScript开发者的一份宝贵参考资料,它不仅提供了实际的代码示例,还有详细的理论指导,对于提升JavaScript技能和深入理解Prototype框架有极大的帮助。无论是初学者还是...

    Prototype-1.6.0 中文版\英文版\Prototype.js

    Prototype是Adam Slovik和Sam Stephenson在2005年开发的,它的目标是通过提供类、对象继承、数组操作、DOM处理等高级功能,来增强JavaScript的基础能力。1.6.0是这个库的一个稳定版本,发布于2007年左右,当时Web...

    prototype.js1.6的帮助文档

    在Prototype.js 1.6版本中,它提供了一系列高效且功能强大的工具,帮助开发者更高效地编写JavaScript代码。这份帮助文档不仅是一份API参考,更是一份学习Prototype.js的宝贵资料。 1. **对象与类的扩展** ...

    prototype.js 1.4版开发者手册

    以上仅是Prototype.js 1.4版的部分核心知识点,实际手册中会涵盖更多细节和示例,帮助开发者深入理解和运用这个强大的JavaScript库。通过学习和实践,开发者可以编写出更加高效、可维护的JavaScript代码。

    prototype.js框架资料

    Prototype.js通过添加类(Class)的概念,以及继承(Inheritance)和原型链(Prototype Chain)的改进,使得在JavaScript中创建和管理对象变得更加自然。例如,你可以使用`Class.create()`来定义一个新的类,使用`...

    prototype 1.6.0.2.js+使用DEMO例子

    1. **对象扩展**:Prototype扩展了JavaScript的类式继承机制,通过`Object.extend()`方法可以方便地为对象添加属性和方法。此外,`Class.create()`和`Object.clone()`等函数则支持面向对象编程。 2. **数组操作**:...

    prototype开发文档和prototype.js文件

    6. **Class和Object继承**:Prototype引入了类的概念,并实现了面向对象的继承机制,使得JavaScript代码组织更加有序。 7. **Function增强**:Prototype扩展了JavaScript的函数,增加了如 curry、bind 和 throttle ...

    prototype.js开发笔记

    Prototype.js 还引入了许多新的对象和类,如 `PeriodicalExecuter`、`Prototype`、`Class`、`Element` 等。 - **`PeriodicalExecuter` 对象**:用于周期性执行某个函数。 - **`Prototype` 对象**:包含了库的基本...

Global site tag (gtag.js) - Google Analytics