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() 方法的返回值相同
