来看一道面试题:
小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp)。从这段描述可以得到以下对象:
function Dog() { this.wow = function() { alert(’Wow’); } this.yelp = function() { this.wow(); } }
小芒和小贤一样,原来也是一条可爱的小狗,可是突然有一天疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。请根据描述,按示例的形式用代码来实现 (提示关键字: 继承,原型,setInterval) 。
思路当然是这样的:用原型来继承,setInterval来循环。于是就有了以下代码
function madDog(){ } madDog.prototype=new Dog(); madDog.prototype.yelp=function(){ setInterval( this.wow() ,500); } var test=new madDog(); test.yelp();
问题出来了:控制台只打出了一个wow,并没有隔半秒就打印wow。