• javascript中对象使用实例及简介


     <script language="javascript">
     //Author : 东阁
     //Date: 2008-1-10
     
     //实现原型的定义
     //并联系定义类的属性和类的方法以及实例属性和实例方法
     function Circle(radius)
     {
      this.r=radius;  //定义了实例 半径属性
     }
     //定义了类的属性
     Circle.PI=3.14;
     //定义类的原型的方法
     //通过把函数赋给构造函数的原型对象使它成为实例方法
     //javascript 1.1中,我们可以用函数直接量定义一个无需命名为Circle_area的函数.
     function Circle_area(){return this.r*this.r*Circle.PI;}
     Circle.prototype.area=Circle_area;
     
     //定义另外的一个函数,通过比较半径的比较来得出那个圆的半径大的作为较大的圆
     function Circle_max(a,b)
     {
      if(a.r>b.r) return a;
      else return b;
     }
     //由于该函数比较的是两个Circle对象,所以将它看作对个别Circle对象进行操作的实例方法
     //是没有意义的,但我们又不希望成为一个单独的函数,所以我们把它赋给了一个构造函数使它成为类函数.
     Circle.max=Circle_max;
     //覆盖了Object.prototype中的toString()方法,实现了C++和Java中类似的方法
     //不同的就是C# 中的那中重写目的来实现的重载
     Circle.prototype.toString=function(){return "this Circle's radius is :"+this.r;}

     var c=new Circle(1.0);
     c.r=2.2;
     var a=c.area();
     var x=Math.exp(Circle.PI);
     var d=new Circle(1.2);
     var bigger=Circle.max(c,d);
     var strbigger=bigger.toString();
     document.write("c's radius is :"+c.r+"d's radius is :"+d.r+"the bigger is:"+strbigger);
     document.write("<br/>this Circle class's attibute PI is :"+Circle.PI);

     

     //定义一个常用的复数类型
     //Complex为复数类
     //复数就是一个实数和虚数的和,虚数是-1的平方根
     /*
     定义类的第一个是定义该类的构造函数。
     这个构造函数要初始化对象的所有实例属性
     这些属性是核心的“状态变量”,是他们使类的各个实例互不相同的
     */
     function Complex(real,img)
     {
      this.x=real;
      this.y=img;
     }
    /*
    定义类的第二步是在构造函数的原型对象中定义它的实例方法(或其他属性)
    该对象定义的任何属性都将被这个类的所有实例继承
    注意实例方法对this关键字的隐式操作
    许多方法都不需要其它实际参数
    */
    Complex.prototype.magitude=function(){
     return Math.sqrt(this.x*this.x+this.y*this.y);
    };
    //以上是一种函数直接量
    //返回复数的相反数
    Complex.prototype.reverse=function(){
     return new Complex(this.y,this.x);
    }
    //以一种有效的方式将一个Complex对象转换为一个字符串
    Complex.prototype.toString=function(){
     return "{"+this.x+"+"+this.y+"i}";
    }
    //返回一个复数的实数部分
    //该函数是在将Complex对象作为原始值处理时调用的
    Complex.prototype.valueOf=function(){
     return this.x;
    }
    /*
    定义类的第三步是定义类方法
    常量和其他必需的类属性,作为构造函数自身的属性(而不是构造函数的原型对象的属性)
    注意,类方法没有使用关键字this,因为它们支队他们的实际参数进行操作.
    */
    //计算两个复数的和并返回结果
    Complex.add=function(a,b){
     return new Complex(a.x+b.x,a.y+b.y);
    }
    //计算两个复数的差
    Complex.subtract=function(a,b){
     return new Complex(a.x-b.x,a.y-b.y);
    }
    //两个复数的乘积
    Complex.mutiply=function(a,b){
     return new Complex(a.x*b.x-a.y*b.y,a.x*b.x+a.y*b.y);
    }
    //下面是一些有用的预定义复数
    //他们被定义为类的属性,这样 它们就可以被用作常量了
    Complex.zero=new Complex(0,0);
    Complex.one=new Complex(1,0);
    Complex.i=new Complex(0,1);
    c1=new Complex(6.2,4.5);
    c2=new Complex(5,3);
    document.write("<br />c1.x="+c1.x+"c1.y= "+c1.y);
    document.write("<br/>c2:   "+c2.toString());
    document.write("<br />"+Complex.add(c2,c1).toString());
    document.write("<br />"+c2.magitude());


    //类的继承
    function MoreComplex(real,img)
    {
     this.x=real;
     this.y=img;
    }
    /*
    我们将它的原型对象作为Complex对象
    这一意味着新类的实例将继承MoreComplex.prototype
    后者有Complex.prototype继承而来
    Complex.prototype又由Object.prototype继承而来的
    */
    MoreComplex.prototype=new Complex(0,0);
    /*
    这种方法有点缺陷就是,由于我们明确地把MoreComplex.prototype设成了我们所创建的一个对象
    所以就覆盖了javascript提供的原型对象,而且抛弃了给定的constructor属性,该属性引用的是创建
    这个对象的构造函数,但是MoreComplex对象继承了他的超类的constructor属性,他自己并没有这个
    属性。明确地设置这一属性可以解决这一问题。
    */
    MoreComplex.prototype.constructor=MoreComplex;
    //注意:以上方法在javascript1.1中
    //下面是给子类添加新方法或新特性
    MoreComplex.prototype.swap=function(){
     var tmp=this.x;
     this.x=this.y;
     this.y=tmp;
    }

    var m=new MoreComplex(3.0,5.6);
    document.write("<br />"+m.toString());
    var n=m;
    m.swap();
    document.write("<br />"+m.toString());
    n.swap();
    document.write("<br />"+n.toString());
    var i=n.magitude();
    document.write("<br />"+i);


    //关联数组的对象
    function Test()
    {
      document.write("x:"+n["x"]+"y:"+n["y"]);
     
    }
    Test();
    //以上引用属性的方法成功,在实际的使用中就可以灵活的访问和添加类的属性了
    //以上表明了javascript除了可以像c++和Java一样使用"."来取属性,同时作为关联数组
    //也表现出出色的性能


     </script>

  • 相关阅读:
    redhat 关机注销命令详解
    CentOS网络配置详解
    Red Hat 6网络配置笔记
    H3C三层交换机S5500初始配置+网络访问策略
    python 发邮件 ,转载:https://mp.weixin.qq.com/s/kmNZ04MlDve4AmCCOoT2HA
    解决不能右键查看元素的问题, 转载:https://mp.weixin.qq.com/s/V_fpPN62Kdf0bz6zgFpVCg
    这几点鲜有人知的爬虫技巧,让你爽歪歪 转载:https://mp.weixin.qq.com/s/52luElhn4nRBZCdQMGEhnw
    一个反爬 JS 逆向分析的例子 转载:https://mp.weixin.qq.com/s/2luhB-AhMIzxVh6rPERzCA
    ssh 端口转发 转载:https://mp.weixin.qq.com/s/uesOCt9gmdST-HpwYTKsIw
    爬虫视频
  • 原文地址:https://www.cnblogs.com/itelite/p/1034693.html
Copyright © 2020-2023  润新知