日期:2014-05-16 浏览次数:20350 次
创建javascript对象的两种语法
a.? new方法,这种方法对学习过OO语言的人来说太常见了。
不过,用这种方法创建对象的前提是,对象所属的类已经存在,比如:
function ClassA(){}
var objA = new ClassA();//如果之前没有定义ClassA类,则这句就要报错了。
b.? : 冒号法,这种方法比较特殊,因为javascript的动态性,我们可以通过这种方法动态地创建一个对象。(奇怪的是,有几个专门讲js的书里面竟然没有说到这种方法,可能因为它太怪异了吧)。举例如下:
var objB = {username:"me",password:"psw"}.
这句在解释运行时动态地筹建一个拥有username和password属性的objB对象。接下我们就可以通过,objB来引用username和password了:
var name = objB.username;
在这种方式中,我们还可以“命名属性”的方式来筹建对象,如:
var objC = {"prop1":"value1","prop2":"value2"};
这里动态创建一个拥有两个属性的js对象objC,该对象拥有两个属性,属性的名称分别叫prop1和prop2(请注意,她们是两个字符串)。在这个时候
我们就想是不是也通过 . 号来引用里面属性了,比如objC."prop1",这种方式?运行发现错误。
那么该怎么办呢?
通过,[] 运算符,如 :var pop = objC["prop1"]可以引用到objC对象里面的 value1。或者用var pop = objC.prop(注意,没有prop没有加引号)来引用。
或许有人会问说,这是我们知道属性命名的时候,我可以这样子做,那要是人家给我传一个对象我不知道名字那该怎么办呢?
别急...javascript里面不是有in运算符吗,in就是用来遍历js对象的属性的,所以可以这样做:
for(prop in objC)
{
?alert("propname:"+prop+"value is:"+objC[prop])
}
最后,请一定记住这话,js是动态的...