JavaScript 对象
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数…
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。
- 布尔型可以是一个对象。
- 数字型可以是一个对象。
- 字符串也可以是一个对象
- 日期是一个对象
- 数学和正则表达式也是对象
- 数组是一个对象
- 甚至函数也可以是对象
JavaScript 对象
对象只是一种特殊的数据。对象拥有属性和方法。
访问对象的属性
属性是与对象相关的值。
访问对象属性的语法是:
objectName.propertyName
使用对象构造器(constructor)
本例使用函数来构造对象:
function person(firstname,lastname,age,eyecolor)
{ this.firstname=firstname; this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
创建 JavaScript 对象实例
一旦您有了对象构造器,就可以创建新的对象实例,就像这样:
var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");
把方法添加到 JavaScript 对象
方法只不过是附加在对象上的函数。
在构造器函数内部定义对象的方法:
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;
}
}
JavaScript for…in 循环
JavaScript for…in 语句循环遍历对象的属性。
语法
for (variable in object)
{
执行的代码……
}
注意: for…in 循环中的代码块将针对每个属性执行一次。
JavaScript 的对象是可变的
对象是可变的,它们是通过引用来传递的。
以下实例的 person 对象不会创建副本:
如果修改 x ,person 的属性也会改变:
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
}
var x = person; x.age = 10; // 改变x的age属性值, x.age 和 person.age 都会改变
已存在构造器的对象中是不能添加新的属性,要添加一个新的属性需要在在构造器函数中添加。
添加属性和方法
有的时候我们想要在所有已经存在的对象添加新的属性或方法。
另外,有时候我们想要在对象的构造函数中添加属性或方法。
使用 prototype 属性就可以给对象的构造函数添加新的属性:
function Person(first, last, age, eyecolor)
{
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
var myfather=new Person("John", "Doe", 50, "blue");
console.log("My father's nationality"+myfather.nationality);
当然我们也可以使用 prototype 属性就可以给对象的构造函数添加新的方法:
function Person(first, last, age, eyecolor)
{
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
var myfather1 = new Person("Tom", "Doe", 40, "black");
console.log(myfather1.name());