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中另一个面向对象的特点是我们可以像高级编程语言一样使用.和[]引用成员. 例如: 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 ;