一.对象
(1).对象的创建与属性的增删改查
var teacher={
name:'张三',
age:32,
sex:'male',
height:176,
weight:130,
teach:function(){
console.log('I am teaching Java')
},
smoke:function(){
console.log('I am smoking')
},
eat:function(){
console.log('I am having a dinner')
}
}
tacher.address='北京';//增属性
teacher.drink=function(){
console.log("I am drinking beer")
}//增方法
delete teacher.address;//删属性
teacher.address='南京';//改属性
console.log(teacher.address)//查
(2).上下课的问题(数组的加和删的方法)
var attendance={
students:[],
total:6,
join:function(name){
this.students.push(name);
if(this.students.length===this.total){
console.log(name+'到课,学生已齐')
}else{
console.log(name+'到客,学生未到齐')
}
},
leave:function(name){
var index=this.students.indexOf(name);
if(index!==-1){
this.students.splice(index,1);
}
console(name+'早退')
}
}
所有的对象都是通过实例化出来的,包括Object.create()
相当于 var obj = new Object() obj.__proto__ = null
二.构造函数
(1).系统自带的构造函数
var obj=new Object(); //对象字面量相等
obj.age=13;
(2).自定义构造函数
function Teacher(){
this.name='张三';
this.sex='男士';
this.smoke=function(){
console.log('i am smoking')
}
}
var teacher=new Teacher();
new完才会存在this,才会有实例,这样才会有this指向teacher
三.实例化
(1).实例化同一个函数
function Teacher(){
this.name='张三';
this.sex='男士';
this.smoke=function(){
console.log('i am smoking')
}
}
var teacher=new Teacher();
var teacher1=new Teacher();
teacher1.name='李四';
console.log(teacher,teacher1);
(2).实例化传参
//普通传值方式
function Teacher(name,sex){
this.name=name;
this.sex=sex;
this.smoke=function(){
console.log('i am smoking')
}
}
var teacher=new Teacher('张三','男');
//对象的传值方式
function Teacher(option){
this.name=option.name;
this.sex=option.sex;
this.smoke=function(){
console.log('i am smoking')
}
}
var teacher=new Teacher({
name:'张三'
});