这两天的构造函数给我搞蒙掉咯
构造函数:
<script>
function Gouzao(shuju){ //构造一个函数名叫gouzao 这个GOUZAO就是这个案例中的构造函数本人了
this.eye="大眼睛";
this.shuju=shuju;//这个就是通过括号传入的数据,也可以传函数 this指向实例(因为实例在最后调用了这个数据)
this.fangfa=quanjufangfa; //把全局中的函数赋给实例中的方法
}
var quanjufangfa=function(){ //这是一个定义在全局的方法 一开始和构造函数没关系 后面被当作数值传入实例中
alert("这个quanjufangfa可以定义成任何数据,传入this.fangfa中");//弹出框
};
Gouzao.prototype.gouzaofangfa=function(){//在构造函数gouzao的prototype对象中添加一个方法fangfa为函数
alert("我是通过点语法在GOUZAO的原型prototype上创造的方法gouzaofangfa");
}
var shili = new Gouzao("这里的值就是shuju的值"); //注意 这里的shili就是实例 是一个对象 括号内的值就是shuju的值
shili.fangfa();//通过实例调用被This.fangfa加入进实例的方法fangfa();
shili.gouzaofangfa();//调用原型中的方法gozaofangfa
alert(shili.shuju); //调用数据
console.log(shili.eye);
//这里就调用gouzao这个构造函数的自带原型prototype中添加的 fangfa 方法
</script>
没错我用了很土的命名法
但是我还是适合这种不然真搞不懂
遵循this 谁调用就指向谁的原则,这个构造函数中的this就是指向shili,因为它被shili调用了
**
var shili = new Gouzao(“这里的值就是shuju的值”); 中shili就是实例
实例就是个对象,可以通过prototype添加方法
构造函数中的THIS全指向实例
,也就是说所有this.###的东西都是给实例添加方法
this.eye=“大眼睛”;
实例.eye的数据就是“大眼睛”
this.food=function(){
console.log(“我是个方法”);
}
就等于
实例.food=function(){
console.log(“我是个方法”);
}