//创建object实例的方法创建对象
var person = new Object();
person.name = 'jerry';
person.age = 22;
person.job = 'Enginner';
person.sayHi = function(){
alert('hello'+this.name);
}
//对象字面量方式创建对象
var person = {
name:'jerry',
age:20,
job:'Enginner',
sayHi:function(){
alert('hello'+this.name);
}
}
// 对象中的属性和方法都带有一些特性来定义他们的行为,这些特性还根据属性的不同而不一样, 属性分为数据属性和访问器属性
// 数据属性:[[Configurable]](表示能否通过delete删除属性从而重新定义属性,或者能否把属性修改为访问器属性.默认为true);
// [[Enumeralbe]](能否通过for-in循环属性,默认为true);
// [[Writable]](能否修改属性的值.默认为true)
// [[Value]](包含属性的数据值,默认为undefined)
// 要修改属性默认的特性,必须使用object.defineProperty(属性所在对象,属性名称,描述符对象)方法.
var person1 = {};
Object.defineProperty(person1,'name',{
writable:false,
value:'Petter'
})
// alert(person1.name);//Petter
person1.name = 'Tom';
// alert(person1.name);//Petter 不可修改
delete person1.name;
// alert(person1.name);
// 访问器属性不包含数据值,它包含一对(getter 和 setter)函数,都是非必须的.
// [[Configurable]](表示能否通过delete删除属性从而重新定义属性,或者能否把属性修改为访问器属性.默认为true);
// [[Enumeralbe]](能否通过for-in循环属性,默认为true);
// [[Get]] :在读取属性时调用的函数。默认值为 undefined 。
// [[Set]] :在写入属性时调用的函数。默认值为 undefined 。
// 访问器属性不能直接定义,必须使用 Object.defineProperty() 来定义
// Object.getOwnPropertyDescriptor(指定对象,要获取描述符的属性名);方法可以取得给定属性的描述符
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;
}
}
})
book.year = 2005;
var a = Object.getOwnPropertyDescriptor(book,'year');//Configurable Enumeralbe Get Set
console.log(a);
// alert(book.edition);//2
6_1 理解对象
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...