JavaScript原型,原型链
js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加。
也就是说:当生产一个function对象的时候,就有一个原型prototype。原型中存储对象共享的属性和方法。
原型链:
当你定义一个函数对象的时候,其内部就有这样一个链表关系。声明foo对象,自带了_proto_的属性,而这个属性指向了prototype,从而实现对象的扩展(例如继承等操作)
例:
3.小贤有一条可爱的狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp),从这段描述可以得到以下对象: function Dog(){
this.wow = function(){
alert(‘wow’);
}
this.yelp = function(){
this.wow();
}
}
小芒和小贤一样原来也有一条可爱的狗,可是突然有一点疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。请根据描述,按示例形式用代码来实现。(继承,原型,setInterval)
function Dog(){
this.wow = function(){
alert('wow');
}
this.yelp = function(){
this.wow();
}
}
function MadDog(){
Dog.call(this);
var _this = this;
this.yelp = function(){
setInterval(function () {
_this.wow();
},500);
}
}
或者
function MadDog(){
Dog.call(this);
this.yelp = function(){
setInterval(this.wow,500);
}
}
- 输出结果:
function fun(){
this.a = 0;
this.b = function(){
alert(this.a);
}
}
fun.prototype = {
b:function(){
this.a = 20;
alert(this.a);
},
c:function(){
this.a = 30;
alert(this.a)
}
}
var my_fun = new fun();
my_fun.b();
my_fun.c();
0 30