对象之一
对象的种类
1.js内置的(如Number)
2.宿主环境(如window)
3.自己创建
对象的创建
1.对象字面量形式
属性 方法 get set型属性
2.成员访问
var p={
name:"modao",
work:function(){
console.log("working...");
},
_age:18,
get age(){
return this._age;
},
set age(val){
if(val<0 || val>150){
throw new Error("invalid value");
}else{
this._age=val;
}
},
address:{
home:"lanjia",
office:"shufang"
}
};
console.log(p.name);
3.Object
Object.defineProperty定义与修改属性
Object.defineProperties
//get set writable enumerable configurable value
Object.defineProperties(p,{
salary:{
value:1000,
writable:true
},
gender:{
value:0,
writable:false
},
height:{
get:function(){
return 180
},
set:function(val){
console.log(val);
}
}
})
对象的基本操作
1.成员的遍历
无序
有序
2.检查对象是否有某个属性
3.成员的删除(有些属性不能删除)
成员特性(annotation)
constructor
类型检测
1.typeof
2.instanceof(对象是否是某个构造器的实例)
对象工厂
function PersonFactory(pname,page){
return{
name:pname,
age:page
};
}
var p1=PersonFactory("weiwuxian",22);
var p2=PersonFactory("lanwangji",23);
缺点:相同的属性和值占空间
解决方法:prototype(只用函数有propotype)
function Person(){
var age=30;
this.age=22;
this.name="weiwuxian"
}
Person.prototype.nationality="China";
var p=new Person();
var p1=new Person();
构造器函数
function Person(){
var age=30;
}
var p=new Person();
function Person(){
var age=30;
this.age=22;
this.name="weiwuxian"
}
var p=new Person();