JavaScript中的对象

                                  JavaScript中的对象

         面向对象(Object-Oriented,OO)的语言有一个标志,那就是他们都没有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。

         ECMA-262把对象定义为:“无序属性的集合,其属性可以包括基本值、对象或者函数”

         创建自定义对象的最简单方式就是创建一个Object的实例,然后再为它添加属性和方法。如下:

var person=new object();

person.name="xiaoming";

person.age=29;

person.job="Software Engineer";

person.sayName=function(){

               alert(this.name);

}

上面的例子中创建了一个名为person的对象,并为它吸纳三个属性(name、age和job)和一个方法(sayName())。sayName()方法用于显示this.name的值。早期的JavaScript的开发人员经常使用这个模式创建新对象。几年后,对象字面量成为创建对象的首选模式,如下:

var person={

          name"xiaoming:",

          age:29,

          job:"SoftwareEngineer",


sayName:function(){

               alert(this.name);

      }

}


         //JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。//

         JavaScript的对象用于描述现实世界中的某个对象。

         JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。

         实际上JavaScript对象的所有属性都是字符串,不过属性对应的值可以是任意数据类型。

          如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined:

          由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:

var xiaoming = { name:'小明'};

xiaoming.age;// undefined

xiaoming.age =18;// 新增一个age属性

xiaoming.age;// 18

deletexiaoming.age;// 删除age属性

xiaoming.age;// undefineddelete

xiaoming['name'];// 删除name属性

xiaoming.name;// undefined

deletexiaoming.school;// 删除一个不存在的school属性也不会报错

如果我们要检测xiaoming是否拥有某一属性,可以用in操作符:

'name'inxiaoming;//true 

'grade'inxiaoming;//false

in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的:

'toString'inxiaoming;//true

        因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。

        要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:

var xiaoming = {name:'小明'};xiaoming.hasOwnProperty('name');//true

xiaoming.hasOwnProperty('toString');//false

         无论该属性存在于实例中还是在原型中。同时使用hasOwnProperty()方法和in操作符,就可以确定该属性到底是存在于对象中,还是存在于原型中。

你可能感兴趣的:(JavaScript中的对象)