抽象和具体的关系
构造函数:抽象,定义的是一类对象应该具有什么属性,什么 方法,描述规则,描述蓝图。
实例:具体,根据蓝图创建一个个具体的实例,它能拥有属性,并且能调用方法。
function Dog(){
this.mingzi = mingzi;
this.tizhong = tizhong;
}
var xiaobai = new Dog("小白",100);
var xiaohong = new Dog("小红",150);
等价于
var xiaobai={ //字面量写法
xingming:"小白",
tizhong:100
};
var xiaohong={ //字面量写法
xingming:"小红",
tizhong:150
};
//Dog构造函数
function Dog(){
this.mingzi = mingzi;
this.tizhong = tizhong;
}
//吃饭方法,是自己实例在调用这个方法
Dog.prototype.chifan = function(){
alert(this.mingzi+"正在吃饭");
this.tizhong +=10;
}
var xiaobai = new Dog("小白",100);
xiaobai.chifan();
alert(xiaobai.tizhong);//110
构造函数中,我们用prototype来定义方法,定义的是构造函数的实例方法,不是构造函数的方法
<input type="button" value="喂所有的狗吃饭" id="btn"/>
function Dog(){
this.mingzi = mingzi;
this.tizhong = tizhong;
}
//吃饭方法,是自己实例在调用这个方法
Dog.prototype.chifan = function(){
alert(this.mingzi+"正在吃饭");
this.tizhong +=10;
//所自己放入数组
dogsArr.push(this);
}
var dogsArr=[];
var xiaobai = new Dog("小白",100);
var xiaohong = new Dog("小红"1500);
var dahuang = new Dog("大黄",200);
//点击按钮,调用所有小狗的吃饭方法
document.getElementById("btn").onclick=function(){
for(var i =0; i<dogsArr.length;i++){
dogsArr[i].chifan();
}
}
网友评论