JavaScript下申明对象的几种方法小结

  1.var myObject = {} ;

  2.function myObject()

  {

  ....

  }

  3.var myObject = function(){} ;

  对于后两种方法,我们还可以增加参数,这样就类似于一个带参数的构造器了.

  例如:

  function myObject(msg)

  {

  alert(msg) ;

  }

  var newObject = new myObject('Hello,World!') ;

  var myObject = function(msg)

  {

  alert(msg + 'again') ;

  }

  var newTwoObject = new myObject('Hello,World!) ;

  甚至我们可以使用字符串来声明函数,这使得我们的程序更加灵活

  例如:

  var myObject = new Function("msg","alert(msg)") ;

  // Function可以有多个入口参数,最后一个参数作为方法体。

  var newObject = new myObject('Hell,World!) ;

  JavaScript中成员的声明

  在JavaScript中,要声明一个对象的成员也非常简单,但是跟其它的高级程序仍然略有不同

  例如:

  var myObject = {

  "FirstName" : "thtwin",

  "LastName" : "thtwinj2ee",

  "Age" : 22,

  "showFullName" : function()

  {

  alert(this.FirstName + ' ' + this.LastName) ;

  }

  } ;

  myObject.showFullName() ;

  在JavaScript中另一个面向对象的特点是我们可以像高级编程语言一样使用.和[]引用成员.

  例如:

  var dateTime = {

  now : new Date(),

  show : function(){

  alert(new Date()) ;

  }

  } ;

  alert(dateTime.now) ;

  等价于:

  alert(dateTime.now) ;

  dataTime.show() ;

  等价于:

  dateTime["show()"] ;

  对于方法调用来说,在JavaScript中,所有的对象的基类是Object,基类通过prototype定义了很多的成员

  和方法,例如:toString,toLocaleString等.

  例如:

  var obj = {"toString" : function(){return "This is an test!" ; }} ;

  alert(obj) ;

  运行时,当alert的时候toString()方法被调用了,事实上,当JavaScript需要将一个对象转换成字符

  时就隐式调用了这个对象的toString()方法.

  例如:

  Date.prototype.toString = function(){alert('this is a test!') ;} ;

  var da = new Date(new Date()) ;

  Date.prototype.toString = function(){alert('this is a test!') ;} ;

  var dt = new Date() + 1 ;

  JavaScript中call方法的使用:

  关于call的解释:

  call 方法可以用来代替另一个对象调用一个方法。

  call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

  例如:

  function abc()

  {

  alert(this.member1);

  }

  var obj = { member1:"Hello world!", show:abc};

  var obj2 = { member1:"Hello world again!", show:abc};

  obj.show();

  //也可以使用

  abc.call(obj);

  abc.call(obj2);

  修改后的另一个版本:

  member1 = 'test';

  function abc()

  {

  alert(this.member1);

  }

  var obj = { member1:"Hello world", show:abc};

  var obj2 = { member1:"Hello world again", show:abc};

  obj.show();

  //也可以使用

  abc.call(obj);

  abc.call(obj2);

  abc(); // 此时abc中的this指向了当前上下文

  每个函数都有call方法,上面的过程中我们看到用另一个对象代替调用显示方法,

  并注意到this在对象上下文中的改变。