JS类定义与对象应用:平面三角形类Triangle

文章作者:中山市飞娥软件工作室「Feiesoft.com」  浏览次数:1999 次  更新日期:2013-10-28

JavaScript是一种真正面向对象的语言,JS采用基于原型的继承而不像C++、Java等语言基于类的继承。JS的对象可以动态地增加N多个属性与方法,而不像C++、Java等语言每个属性都要预先定义好。

<script type="text/javascript">
//==================================================================================================
//下面申明一个平面三角形类 Triangle:
function Triangle(a,b,c){
 if(a>0 && b>0 && c>0 && a<(b+c) && b<(a+c) && c<(a+b)){
  this.a = a;
  this.b = b;
  this.c = c;
  this.l = function(){
   return (this.a+this.b+this.c)/2;
  };
  this.s = function(){
   var p = this.l();
   return Math.sqrt(p*(p-this.a)*(p-this.b)*(p-this.c));
  };
  this.toString = function(){
   return "△(" + this.a + "," + this.b + "," + this.c + ")";
  };
 }
}
//==================================================================================================
var pt1 = new Triangle(3,4,5);
document.write("<br>" + pt1 + " 面积:" + pt1.s() + " 周长:" + pt1.l() + "<br>");
//==================================================================================================
//三角形全等:三角形三边对应相等
Triangle.equ = function(t1,t2){
 var t1 = [t1.a,t1.b,t1.c].sort();
 var t2 = [t2.a,t2.b,t2.c].sort();
 return t1[0] == t2[0] && t1[1] == t2[1] && t1[2] == t2[2];
}
//==================================================================================================
//三角形相似:三角形三边对应成比例
Triangle.sim = function(t1,t2){

 var t1 = [t1.a,t1.b,t1.c].sort(function(a,b){return a-b});
 var t2 = [t2.a,t2.b,t2.c].sort(function(a,b){return a-b});
 
 var k1 = t1[0] / t2[0];
 var k2 = t1[1] / t2[1];
 var k3 = t1[2] / t2[2];
 
 return k1 == k2 && k1 == k3;
}
//==================================================================================================
var pt1 = new Triangle(3,4,5);
var pt2 = new Triangle(3,5,4);
var pt3 = new Triangle(9,15,12);
//全等≌
document.write(pt1  + (Triangle.equ(pt1,pt2) ? "≌" : "≠") + pt2 + "<br>");
document.write(pt2  + (Triangle.equ(pt2,pt3) ? "≌" : "≠") + pt3 + "<br>");
document.write(pt1  + (Triangle.equ(pt1,pt3) ? "≌" : "≠") + pt3 + "<br>");
//相似∽
document.write(pt1  + (Triangle.sim(pt1,pt2) ? "∽" : "≠") + pt2 + "<br>");
document.write(pt2  + (Triangle.sim(pt2,pt3) ? "∽" : "≠") + pt3 + "<br>");
document.write(pt1  + (Triangle.sim(pt1,pt3) ? "∽" : "≠") + pt3 + "<br>");
//==================================================================================================

输出:

△(3,4,5) 面积:6 周长:6
△(3,4,5)≌△(3,5,4)
△(3,5,4)≠△(9,15,12)
△(3,4,5)≠△(9,15,12)
△(3,4,5)∽△(3,5,4)
△(3,5,4)∽△(9,15,12)
△(3,4,5)∽△(9,15,12)

</script>