一、基础
js 基本类型:undefined、null、number、string、boolean
对象类型:
1、js内置的(如Number)
2、宿主环境(如window)
3、自己创建的
二、对象创建的方式
1、对象字面量形式
属性:
方法:
get、set型属性
2、成员访问
两种访问方法:. 和 []
没有的时候会返回Undefined
级联访问
3、Object
Object.defineProperty定义与修改属性
Object.defineProperties
事例:
var p = {
name :"CJ", //属性
work:function (){ //方法
console.log("working");
},
_age:18,
get age(){
return this._age;
},
set age(val){
this._age = val;
},
address:{home:"jiating",office:”office“}
};
console.log(p.name);
console.log(p._age);//约定,带_的属性不要访问
p.age = 30;
console.log(p.age)
console.log(p.address.home)
var result = p && p.address && p.address.home;
var o = new Object();
o.name = "xxx"
o["abc"] = "abc"
Object.defineProperty(p,"yy",{value:100,writable:false});
p.yy;//100
p.yy=200;
p.yy;//100
//get.set,writable,enuerable,conigurable,value
Object.defineProperties(p,{
salary:{value:1000,writable:false},
gender:{value:true},
height:{get:function(){return 180},set:function(val){console.log(val)}}
});
p.salary;
三、对象的基本操作
1.成员的遍历
2.检查对象是否有某个属性
3.成员的删除(有的不能删除)
for(sx in p){ //无序
console.log(sx);console.log(p[sx])
}
Object.keys(p);//有序
”name“ in p;
p.hasOwnProperty("name");
delete p.name
四、成员特性
get.set,
writable(能否改值),
enuerable(遍历时能否出现),
conigurable(是否可配置),
value
Objet.getOwnPropertyDescriptor(p,"address")//获取属性特性
五、构造器与类型检测
顶级:Functon 二级:Object Number Array
typeof 1;
typeof true;
o instanceof Object;
o instanceof o.constructor;
六、对象工厂
function PersonFactory(pname,page){
return {
name:pname,age:page,headCount:1
}
}
var p1 = PersonFactory("cj",22)
var p2 = PersonFactory("david",33)
缺点:对象完全独立,共有属性浪费
七、构造器
function Person(){ //作为一个类
//var age = 30; //无法访问 ,私有变量
this..age = 22;
this.name = "cj";
}
var p = new Person;
p.age
p.name
var p1= new Person;
//解决共同问题
Person.prototype.headCount = 1;