对象字面量
javascript中的对象(object)类型,对于大多数时候用对象字面量来指定创建新的对象和指定所有属性和行为。
例如:
var taix = {
make: "motors",
year: 1955,
started: false,
start: function() {
if (start == true){
alert("Zoo Zoo");
} else {
alert("sorry ");
}
}
};
对于创建大量相同对象时,对象字面量显得复杂冗杂。使用对象构造函数能够很好的优化这些问题。
对象构造函数
首先,需要定义一个构造函数,然后使用它创建对象。
1. 定义构造函数
格式如下:
function Taix(make,year) {
this.make = make;
this.year = year;
this.started = false;
this.start = function() {
if (start == true){
alert("Zoo Zoo");
} else {
alert("sorry ");
}
}
}
- 使用function开头,表示为函数。
- 构造函数命名时,首字母大写,区别于一般的函数。
- 形参即提供的属性值,一般与属性名相同。
- this为要创建对象的。在后面使用new时会详细介绍。
- 对于方法中的this,是调用函数方法是的对象。
2. 使用构造函数
格式如下:
var fido = new Taix("abc",1890);
- 使用运算符new。
使用构造函数进行属性值的传递中,如果属性值较多则实参,形参需要按顺序排列,容易出错。因此,我们使用一个对象字面量代替所有实参。
例如:
function Taix(params) {
this.make = params.make;
this.year = params.year;
this.started = false;
this.start = function() {
if (start == true){
alert("Zoo Zoo");
} else {
alert("sorry ");
}
}
}
var cartemp = { make: "abc",
year: 1890};
var fido = new Taix(cartemp);
3. 工作原理
- 首先定义构造函数。
- 使用new创建一个空对象。
- new设置this,指向新对象。
- 在对一函数中,将属性值传给这个对象。
- 运算符new返回this,只相信创建对象的引用。
注意:
- 在定义构造函数时,不需要显示指定返回,new会自动返回新对象。
- 在使用构造函数时,若缺少new此时对象存储在全局变量的顶级变量中(即window)。当调用对象时,显示对象为定义。
对象实例instanceof
如何判一个个对象是否属于这个构造函数产生的对象呢?可以使用instanceof进行判断。
格式:
实例 instanceof 对象
如果属于这个对象则返回true,反之false。
- 在对new构造的对象进行属性和方法的增添删除后,该对象仍然属于这个构造函数构造的对象。
- 对于对象字面量定义的对象,属于Object的实例。
内置构造函数
在js内部有很多内置构造函数,这里介绍两个以示说明。
日期对象Date
var now = new Date();
now中存储当前本地的日期和时间。同时now具有很多方法,例如
var dataString = now.toString().
var theYear = now.getFullYear();
数组对象Array
var temp = new Array(n);
返回一个长度为n的空数组。缺省n,返回一个长度为0的空数组。