一、创建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变量。