1. 引用类型
引用类型是一种数据结构,也被称为对象定义,一组数据与功能的集合,描述的是一类对象所具有的属性和方法
引用类型的值,是保存在内存中的对象
javascript 不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间
在操作对象时,实际上操作的是对象的引用。
当复制保存对象中的某个变量时,操作的是对象的引用,但在为对象添加属性或方法时,操作的是实际的对象
当从一个变量向另一个变量复制引用类型值时,复制的是这个对象的指针,指向存储在内存中的对象。复制结束后,两个变量实际上将引用同一对象,相互影响。
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "Nicholas";
alert(obj2.name); // "Nicholas"
2. 创建方法
第一种,使用 new
操作符加上对象类型名称相应的构造函数创建
var person = new Object();
person.name = "Nicholas";
person.age = 29;
如果不给构造函数传递参数,可以省略后面的一对圆括号,但是不推荐
第二种,使用对象字面量表示法
var person = {
name: "Nicholas",
age: 29
}
这里的属性名也可以用字符串的形式
注意属性之间以逗号隔开,最后一个属性后不添加逗号,否则会出现语法错误。
对象字面量也是向函数传递大量可选参数的首选方式
function displayInfo(args) {
var output = "";
if (typeof args.name == "string") {
output += "Name: " + args.name +"\n";
}
if (typeof args.age == "number") {
output += "Age: " + args.age + "\n";
}
alert(output);
}
displayInfo({
name: "Nicholas",
age: 29
});
displayInfo({
name: "Greg"
});
最好的做法是,对那些必需值使用命名参数,使用对象字面量来封装多个可选参数
3. 访问对象属性和方法
点表示法
alert(person.name);
方括号表示法
alert(person["name"]);
主要优点是,可以通过变量来访问属性
var propertyName = "name";
alert(person[propertyName]);
如果属性中包含会导致语法错误,或者关键字、保留字等,可以使用方括号表示法
除非必须使用变量来访问属性,否则建议使用点表示法
4. Object 实例默认属性和方法
4.1 constructor
保存着用于创建当前对象的函数,即构造函数
o.constructor = object;
4.2 hasOwnProperty()
用于检查给定属性在当前对象实例中是否存在(不包含实例的原型)。
o.hasOwnProperty("propertyName");
propertyName
参数必须以字符串的形式指定
4.3 isPrototypeOf()
用于检查传入对象是否是对象的原型
4.4 propertyIsEnumerale()
用于检查给定的属性是否能够使用 for-in
来枚举
4.5 toLocaleString()
返回对象的字符串表示,该字符串与执行环境的地区对应
4.6 toString()
返回对象的字符串表示
4.7 valueOf()
返回对象的字符串、数值或布尔值表示。通常与 toString()
方法的返回值相同