日期:2014-05-16  浏览次数:20308 次

创建javascript对象的两种语法

创建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是动态的...