zoukankan      html  css  js  c++  java
  • javascript王者归来类和对象

    我们对JavaScript对象已经并不陌生,下面的例子展示了三种构造对象的方法:

           例: 21.1 对象的三种基本构造法

           //第一种构造法:new Object

    var a = new Object();

           a.x = 1, a.y = 2;

           //第二种构造法:对象直接量

           var b = {x : 1, y : 2};

           //第三种构造法:定义类型

           function Point(x, y)

           {

                  this.x = x;

                  this.y = y;

           }

           var p = new Point(1,2);

           其中,第一种方式是通过实例化一个Obejct来生成对象,第二种方式是通过对象常量,而第三种方式比较特殊,我们先构造了一个function,这个 function代表了一“类”特殊的对象,这类对象描述二维平面上的点,new Point(1,2)表示二维平面上坐标为(1,2)的点,要得到二维平面上坐标为(3,4)的点则可以用new Point(3,4)。

           现在我们比较一下这三种方法的差别,第一种方法是通过构造基本对象直接添加属性的方法来实现的。我们说JavaScript是一种弱类型的语言,一方面体 现在JavaScript的变量、参数和返回值可以是任意类型,另一方面也体现在,JavaScript可以对对象任意添加属性和方法,这样无形中就淡化 了“类型”的概念。例如:

           var a1 = new Object();

           var a2 = new Object();

           a1.x = 1, a1.y = 2;

           a2.x = 3, a2.y = 4, a2.z = 5;

           你既没有办法说明a1、a2是同一种类型,也没有办法说明它们是不同的类型,而在C++和Java中,变量的类型是很明确的,在声明时就已经确定了它们的类型和存储空间。

           第二种方法和第一种方法大同小异,实际上你可以将它看成是第一种方法的一种快捷表示法。

           比较有趣的是第三种方法:

           function Point(x,y)

           {

                  this.x = x;

                  this.y = y;

           }

    var p1 = new Point(1,2);

    var p2 = new Point(3,4);

    你现在知道了p1和p2是同一种类型,它们都是Point的实例。而对于p1和p2来说,Point是它们的“类”,p1、p2和Point之间的关系是创建与被创建的关系,这种关系是面向对象中最重要的一种关系,它是“泛化”关系的一个特例。

    通常我们在讨论面向对象时,构造对象时采用的是上面第三种方法,因为“创建”是面向对象中不可缺少的一种“泛化”关系。

  • 相关阅读:
    Linq 中 表连接查询
    Html Div 拖拽
    持续集成:TestNG中case之间的关系
    测试技术培训:如何测试磁盘写的速度
    POPTEST 测试开发 免费培训课程报名
    接上文 下面是一段示例代码
    老李分享:android手机测试之适配(1)
    (转)POPTEST创始人李爱然:谢谢,帮助我的朋友!!!!
    性能调优之SQL优化
    大数据测试之Hadoop的基本概念
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100589.html
Copyright © 2011-2022 走看看