`

JS面向对象编程总结四

    博客分类:
  • JS
阅读更多
<html>
        <head>
	<script type="text/javascript">
	     
	    
		

    //实例变量和实例方法都是通过实例对象加"."操作符然后跟上属性名或方法名来访问的
    //也可以直接用类名加"."操作符然后跟上属性名或方法名来访问.定义类属性和类方法很简单:


    Person.counter = 0;   //定义类变量,创建的Person实例的个数   
 
    function Person(name,age) {   
    		this.name = name;   
    	  this.sex = age;
    	  Person.counter++; //没创建一个实例,类变量counter加1   
   } 
		
	 Person.whoIsOlder = function(p1,p2) 
	 { //类方法,判断谁的年龄较大   
	    if(p1.age > p2.age)
	    {   
	        return p1;   
	    }
	    else
	    {   
	        return p2;   
	    }   
   }
   
   
      
	
		
		function test1()
		{
			var p1 = new Person("p1",18);   
		  var p2 = new Person("p2",22);
		  alert("现在有 " + Person.counter + "个人");  //现在有2个人   
			var p = Person.whoIsOlder(p1,p2);   
			alert(p.name + "的年龄较大");   //p2的年龄较大  
   }
		
		  

	 
	 
	 //prototype属性的作用
	 function Circle(radius) {   
    this.radius = radius;   
    this.area = function() {   
        return 3.14 * this.radius * this.radius;   
    }   
	}   
	   
  //以上例子的缺点是:如果定义了100个Circle类的实例对象,那么每个实例对象都有一个radius属性和area方法,
  //每个Circle类的实例对象的area方法都是一样,这样的话,我们就可以把area方法抽出来定义在Circle类的prototype属性中,
  //这样所有的实例对象就可以调用这个方法,从而节省空间
  //把上面的例子修改为:
  
	function Circle2(radius) {   
    this.radius = radius;   
       
	}
	
	Circle2.prototype.area=function()
	{
		return 3.14*this.radius*radius;
	}
	
	
	
	//下面使用prototype模拟类的继承
	function Circle3(radius) {   
    this.radius = radius;   
       
	}
	
	Circle3.prototype.area=function()
	{
		return 3.14*this.radius*radius;
	}
	
	function PositionCircle(x,y,radius)//定义类PositionCircle
	{
		this.x=x;   //属性横坐标
		this.y=y;   //属性纵坐标
		Circle3.call(this,radius);
	}
	
	
  
  function test2()
  {
  	PositionCircle.prototype=new Circle3();//设置的父类为Circle3类
		var pc = new PositionCircle(1,2,1); 
		alert(pc.area());  //3.14   
	  alert(pc.radius);//1
	  alert(pc.constructor); //Circle3       
	  PositionCircle.prototype.constructor = PositionCircle   
	  alert(pc.constructor);  //PositionCircle 
  }
	
	
	

	    
				
	</script>
         </head>
	<body>
		<input type="button" value="test1" onclick="test1();"/><br/> 
		
	</body>
</html>
分享到:
评论

相关推荐

    Javascript面向对象编程.

    在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...

    JavaScript面向对象编程指南

    《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。

    JavaScript面向对象编程指南.pdf

    JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库

    JavaScript面向对象编程指南(第2版).rar

    JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。

    js 面向对象实例

    综合以上知识,`js 面向对象实例`涵盖了JavaScript中的面向对象编程基础,以及如何将这些概念应用到HTML5 Canvas的实践中。通过学习和实践这个实例,你不仅可以理解JavaScript的OOP机制,还能掌握如何利用Canvas API...

    JavaScript面向对象编程.pdf

    JavaScript面向对象编程.pdf

    JavaScript面向对象编程指南 pdf

    下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...

    JavaScript面向对象编程指南完整版

    JavaScript面向对象编程指南是完整的扫描版...

    JS面向对象编程

    javascript面向对象编程培训教程PPT

    javascript面向对象编程

    面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的...

    JavaScript面向对象编程

    JavaScript面向对象编程是一种基于原型(Prototype)的编程范式,它是动态类型语言,允许开发者创建具有复杂特性的对象。在JavaScript中,面向对象主要通过构造函数、原型链和闭包来实现。以下是对这一主题的详细...

Global site tag (gtag.js) - Google Analytics