JavaScript下申明对象的几种方法小结 |
本文标签: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在对象上下文中的改变 。 |