一、创建object


1、使用new操作符后跟Object构造函数 如:

 var person = new Object();  可以写成 var person = {};

 person.name = "kitty";

 person.age = 25;



注:object对象的属性名也可以以变量的形式填充赋值
   
   
   
   
    
     var person = new Object();
   
   
   
   
    
     var Properties='name';
   
   
   
   
    
     person[Properties] = "kitty";
   
   
   
   
    
     但是这种变量只能以'[]'的形式填充赋值



2、使用“对象字面量”表示法,如:

 var person = {

      name : "kitty",

      age:25

 };


3、工厂模式 方法:

 var createPerson = function(name,age,job){
       var person = new Object();
       person.name = name;
       person.age = age;
       person.job = job;
       person.sayName = function(){
          alert(person.name);
       }
       return person;
    }
    
    var person1 = createPerson("zh","62","Doctor");
    person1.sayName();


javascript对象默认成员属性都是public的,但是在面向对象中我们通常是使用new关键字创建对象,因此使用上面的方法去定义可能觉得奇怪,下面来看看构造函数的形式定义类。


4、构造函数模式  方法

function Person(name,age,job){
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayName = function(){
       alert(this.name);
    };
  };
  
  var person1 = new Person("zhou",23,"test");
  person1.sayName();


在构造函数内部创造对象使用this 关键字,使用new 运算符创建对象感觉非常亲切。但是也有点问题:每次new 对象时都会创建所有的属性,包括函数的创建,也就是说多个对象完全独立,我们定义类的目的就是为了共享方法以及数据,但是car1对象与car2对象都是各自独立的属性与函数,最起码我们应该共享方法。这就是原形方式的优势所在。



(以上四种摘自:)


二、获取键值

有三种方法获取键值:

var obj = {name:'inuyasha',age:18};

1. 在明确键名的情况下使用‘.’的方式:

obj.name; //inuyasha

2. 如果键名保存在了变量中,则使用 '[]'的方式:

var key = 'name;

obj[key]; //inuyasha

3. 如果键名保存在了变量中,还可以使用 'eval'的方式:

var key = 'name;

eval("obj."+key); //inuysha



三、删除键值对

根据键值删除对象中的键值对,使用delete运算符:

删除键值为name的键值对:delete obj.name; 成功返回true,失败返回false。

成功则obj对象变为{age:18}。



四、遍历




//创建了一个名为data的对象,并创建5个对象同时赋值
var data = {"length1":76,"length2":155,"length3":76,"length4":155,"length5":76};

//枚举获取该对象的属性
for(var i in data )
{
    alert(i);  //属性名称
    alert(data[i]);  //该属性的值
}
for...in 循环代码块中的语句会对data对象的每个属性执行一次,在每一次迭代过程中所要处理的属性名会被赋给i变量。