javscript高级编程中 Object

                  Javascript 高级编程第 

1.引用类型

引用类型的值(对象)是引用类型的的一个实例。在ECNAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,它也常被称为类,但这种称呼并不妥当。尽管ECNAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构,引用类型有时也被称为对象定义,因为它们描述的是一类对象所具有的的属性和方法。

注意:虽然引用类型与类看起来相似,但它们并不是相同的概念。

 

如前所述,对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的。构造函数是Object, 它只为新对象定义默认的属性和方法。ECMAScript提供了很多原生的引用类型(例如:Object),以便开发人员用以实现常见的计算任务。

   1.1 Object类型

        到目前为止,我们看到的大多数引用类型值都是Object 类型的实例;贰仟,Object也是ECMAScript中使用对多的一个类型。虽然Object的实例不具备多少功能,但对于在引用程序中存储和传输数据而言,它们确实是非常理想的选择。

创建Object实例的方式有两种:第一 是使用new 操作符后跟Object构造函数,如下所示:

 

Var person =new Object();

Person.name=”Nicholas”;

Person.age=20;

 

 

  另一种方式是使用对象字面量 表示法。对象字面量是对象定义的一种简写方式,目前在于简化创建包含大量属性的对象的过程。下面这个例子就使用了对象字面量语法定义了与千米那那个例子中相同的person对象: 

Var person={

   Name:”Nicholas”,   

   Age:29

}:

 

在这个例子中,左边的花括号({)表示对象字面量的开始,因为它出现在了表达式上下文(expression context)中,ECMAScript中的表达式上下文指的是能够返回一个值(表达式)。赋值操作符表示后面一个值,所以,左边括号在这里表示一个表达式的开始。同样的花括号,如果出现在一个语句上下文(statement context)中,列如,跟在IF 语句条件的后面,则表示一个语句快的开始。、

然后,我们定义name属性,之后是一个冒号,再后面是这个属性的值。在对象字面量中,使用逗号来分隔不同的属性,因此“Nichols”后面是一个逗。但是,在age属性的值29后面不能加逗号,因为age是这个对象的最后一个属性。在最后一个属性后面添加逗号,会在IE7以及更早的版本和Opera中导致错误。

 

在使用对象字面量的语法时,属性名也可以使用字符串,如下所示。

Var person={

      “name”:”Nicholas”,

      “age”:29,  

       5:true

};

 

这个例子会创建一个对象,三个属性:name,age,5。但是这里的数值属性名会自动转换成字符串。

另外,使用对象字面量语法时,如果留空花括号,则可以定义只包含默认属性和方法的对象,如下所示:

Var person={};     //与new Object相同

Person.name=”Nichols”:

Person.age=2;

 

 

虽然可以使用前面介绍的任何一种方法来定义对象,但开发人员更青睐对象字面量语法,因为这种语法要求的代码很少,而且能够给人封装的感觉,实际上,对象字面量也是向函数传递大量可选参数的首选方式,例如:

Function  displayInfo(args){

     Var output=””:

     If(typeof args.name==”string”){

     Output+=”Name”+args.name+”\n”; 

       

     }

    If(typeof args.age==”number”){

        output+=”age:”+args.age+”\n”;

    }

 

    Alert(output);

}  

 

 

displayInfo({

  Name:”Nicholas”,

  Age:20

});

 

displayInfo({

  “name”:”Greg” 

});

 

 

在这个例子中,函数displayInfo()接收一个名为args的参数,这个参数可能带有一个名为name或age的属性,也可能这两个属性都有或者都没有。在这个函数内部,我们通过typeof 操作符来检测每个属性是否存在,然后在基于相应的属性来构建一条要显示的消息,然后,我们调用了两次这个函数,每次都使一个对象字面量来指定不同的数据。这两次调用传递的参数虽然不同,但函数都能正常执行。

 

一般来说,访问属性时使用的都是点表示法,这也是很对面向对象语言中通用的语法,不过,在javascript也可以使用方括号表示法来访问对象的属性,在使用方括号语法时,应该将要访问的属性一字符串的形式放在括号中,如下例子:

 

Alert(person[“name”]);     //”Nicholas”

Alert(person.name);          //”Nicholas”

 

 

如果觉的上面字太多了的话,其实就是几种基本的Object的方法。 1. 通过new Object() 2. 通过 字面量 {}方式 

posted @ 2014-03-28 01:01  胡一飘  阅读(202)  评论(0)    收藏  举报