对象只是带有属性和方法的特殊数据类型
JavaScript 提供多个内建对象,比如 String、Date、Array 等等
属性是与对象相关的值
访问对象属性的语法是
objectName.propertyName
下面的代码使用了 String 对象的 length 属性来获得字符串的长度
var message="Hello World!";
var x=message.length;
上面的代码执行后,x 的值将是 12
方法是能够在对象上执行的动作
可以通过以下语法来调用方法
objectName.methodName()
下面的代码使用了 String 对象的 toUpperCase() 方法来将文本转换为大写
var message="Hello world!";
var x=message.toUpperCase();
上面的代码执行后,x 的值将是 HELLO WORLD!
JavaScript 允许我们定义并创建自己的对象
创建新对象有两种不同的方法
下面的代码创建了对象的一个新实例,并向其添加了四个属性
var person = new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";
上面的代码也可以使用对象 literals 来简写
var person={
firstname:"John",
lastname:"Doe",
age:50,
eyecolor:"blue"
};
可以使用函数来构造对象
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
JavaScript 中,this 通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)
一旦有了对象构造器,就可以创建新的对象实例
var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");
可以通过为对象赋值,向已有对象添加新属性
下面的范例,我们给 person 对象添加这些新属性:firstname、lastname、age 以及 eyecolor
var person = {};
person.firstname="John";
person.lastname="Doe";
person.age=30;
person.eyecolor="blue";
x=person.firstname;
上面的代码执行后,x 的值将是:John
方法只不过是附加在对象上的函数
可以在构造器函数内部定义对象的方法
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
changeName() 函数 name 的值赋给 person 的 lastname 属性
然后我们就可以尝试调用 changeName() 方法
var my=new person("John","Doe",50,"blue");
my.changeName("Doe");
JavaScript 是基于原型( prototype ) 的语言,JavaScript 不使用类
JavaScript 中,不会创建类,也不会通过类来创建对象
JavaScript 基于 prototype,而不是基于类的
我们可以使用 for...in 语句循环遍历对象的属性
for (variable in object)
{
//执行的代码...
}
for...in 循环中的代码块将针对每个属性执行一次
下面的代码用于循环遍历 person 对象的属性
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}