1. 最简单的创建自定义对象 使用字面量设计
var person={
name:holo,
age:14,
sayName:function(){
alert(name)
}
};
2. 属性类型:数据属性和访问器属性
数据属性:
内部值:规范将他们放在俩对方括号内
[[Configurable]]:能否删除 默认为true
[[Writable]]:能否写入 默认为true
[[Value]]:属性的值 默认为undefined
一般字面量创建对象的时候、未指明、都为true
用object.defineProperty()创建一个新的属性的时候、上述值都为false
访问器属性:
访问器属性 getter setter 俩着并非要同时定义
不能直接定义 必须通过Object.defineProperty()定义
例子var person=new Object{
name:"zhangsan";
age:99;
};
Object.defineProperty(person,"name",{
//为name属性设置CEWV值(非必须)
//当设置了configurable为false之后、就不能再更 //改为可配置
value:"guii", //为逗号分割
get:function(){
}
});
定义多个属性值利用object.denfineProperties()
第一个参数是需要修改或者添加其属性的对象
第二个参数是对象的属性与第一个对象中要添加或者修改的属性一一对应。
例子
var person=new Object{
name:"zhangsan";
age:10;
};
Object.defineProperties(person,{
"_name":{
get:function(){
return this.name;
},
set:function(newString){
this.name+=newString;
},
Writeable:true
},
"_age": {
get:function () {
return this.age;
},
set:function (newNumber) {
this.age += newNumber;
}
}
});
console.log(person.age); //10
console.log(persong.age_=25);
console.log(persong.age); //35
3. 读取BOM DOM等任意对象属性的特性
方法:getOwnPropertyDescriptor();
第一个参数是对象名称 第二个参数是要读取的第一个参数对象的属性名称
如果是属性定义的是访问器属性,则包含configurable,Enumberable,get,set.
如果是属性属性,则包含configurable,Enumberable,Writeable,Value
var person={
name:"张三",
age:25
};
//获取属性所在对象的属性特性
var propertyV=Object.getOwnPropertyDescriptor(person,"age");
console.log(propertyV.value); //25
网友评论