每个对象都是基于一个引用类型创建的。
创建一个自定义对象就是创建一个Object的实例。
var person = new Object();
person.name = "Kelly";
person.age = 18;
person.job = "SoftWare Engineer";
person.Sayname = function () {
alert(this.name);
};
使用对象字面量语法可以写成:
var person ={
name: "Kelly",
age : 18,
job : "SoftWare Engineer",
Sayname : function () {
alert(this.name);
}
};
ECMAScript中有两种属性:数据属性和访问属性
数据属性:包含一个数据值的位置,在这个位置可以读取值和写入值。
有4个描述其行为的特性:
[Configurable]表示能否通过delete删除属性从而重新定义属性;能否修改属性的特性;能否把属性修改为访问器属性。默认为true;
[Enumrable]表示能否通过for-in循环返回属性。默认为true;
[Writable]表示能否修改属性值。默认为true;
[Value]包含这个属性的数据值。默认为undefind;
要修改属性默认的特性,应使用Object.defineProperty()方法。该方法接受3个参数:属性所在的对象,属性的名字,四个特性;
不可在IE8中使用;
例如:
Object.defineProperty(person,"name",{}
writable:false,
value:"Kelly"
});
访问器属性:访问其属性不包含数据值;包含一对getter和setter函数。getter读取访问器属性,负责返回有效的值;setter用于传入新值,负责决定如何处理数据。
有以下四个特性:
[Configrable]同上;
[Enumerable]同上;
[Get] 在读取属性时调用的函数;默认undefined;
[Set] 在写入属性时调用的函数;默认undefined;
访问其属性不能直接被定义,必须使用Object.definedProperty()来定义。
var book = {
_year:2004,//下划线是一种常用记号,用于表示只能通过对象方法访问的属性。
edition:1
}
Object.defineProperty(book,"year",{
get: function() {
return this.year;
},
set: function (newValue) {
if(newValue>2004){
this.year = newValue;
this.edition+=newValue -2004;
}
}
});
定义多个属性:
Object.defineProperties()
读取属性的特性:
Object.getOwnPropertyDescriptors();可以。取得给定属性的描述符。该方法接受两个参数:取其描述符的属性属性名称属性所在的对象和要读取其描述符的属性名称,返回值是一个对象。
本文深入探讨了JavaScript中对象的创建方式,包括基于引用类型的自定义对象实例化,以及使用对象字面量语法。详细解析了ECMAScript中的数据属性与访问属性,包括各自的行为特性及如何使用Object.defineProperty()进行属性特性的自定义。
2012

被折叠的 条评论
为什么被折叠?



