Javascript客户端脚本的设计和应用

2019-06-03 21:43:33于海丽


  对象成员访问与JAVA类似:对象名.成员名
  为一个类添加新成员,只要给特定的成员名赋值即可(不赋值的话读出来都是 undefined),实际上全局变量或函数也就是顶级对象的成员属性和方法,从这个角度上来思考,大家就很容易理解我在VAR一节中描述的变量声明规则了。
  
  在Javascript中函数既然被视作一个类型,那么函数的声明就会有与普通变量相似的方法:
  var my_func = new Function ("arg1", "arg2", ... , "argN", " var rs = arg1 + arg2 + ... + argN; return rs; ");
  var my_func = function (arg1, arg2, ... , argN)
    {
      var rs = arg1 + arg2 + ... + argN;
       return rs;
    };
  前者被称之为构造器法,后者被称之为直接量法。

  10、PROTOTYPE

  function Point ( x, y ) {
    this.x = x;
    this.y = y;
    // this.func = m_func;
  }
  Point.prototype.func = m_func;
  Point.prototype.s_name = "Point";
  function m_func( num ) { ... }
  new Point () ;
  var newPoint = new Point( 1, 3 );
  newPoint.func( newPoint.x + new Point.y);
  PROTOTYPE是原型的意思,我改变在第九节中 Point 的实现。把 m_func 赋给了Point的原型。
  这一改变唯一的好处就是我们不用在每次调用 Point 函数都对 func 属性赋值了,func 属性被保存在 Point 的原型对象中,从而节省了内存空间。 Point 与 Point.prototype 的关系请查阅相关的资料,这里不再详述。
  用PROTOTYPE可以实现JAVA中的静态变量和静态方法(由于某些浏览器实现在对象创建之后才创建它的原型对象,所以建议在使用原型对象中静态成员之前先调用一次构造器方法,如同样例中 new Point();语句,调用结束之后,无用对象将被回收,但其原型对象将继续驻留在内存中),在Javascript支持的有限的对象继承也与PROTOTYPE有一定联系。

  11、ARRAY

  var arr_8 = new Array(8);
  var arr = new Array();
  var arr_d = [ 1, 2, , 4 , .., "Hi", null, true, document ];
  var arr_m = [ [ 1, 2, 3, 4 ], [ 5, 6, 7], [ 8 ] ];

  arr_8[ 3 ] = "ABC";
  arr[ 100 ] = 8.8888;
  arr_d[ 0 ] = "CDE";
  arr_m[ 1 ][ 0 ] = "XYZ";
  数组的创建可以通过 new Array 的构造器方法(参数是数组初始长度,空参数表示零长度)。
  或者是把[ 数据 , 数据 , ... , 数据]的数组直接量赋给变量,数据之间用逗号分隔,arr_d中蓝色的部分有两个连续的逗号表示第三个元素空缺,其值为 undefined。
  构造器方法的样例: arr_8和arr ;数组直接量的样例: arr_d和arr_m 。

  Javascript中的数组是动态数组,它将随着元素数量自动调节数组长度。
  Javascript中的数组元素没有任何类型限制,未初始化的元素值为 undefined。