腾讯的一道js面试题(原型)

时间:2023-03-08 20:21:44

  有一只小狗叫花花,它会“汪汪”叫,他的同伴也会汪汪叫,后来环境发生了变化,新出生的狗不会再“汪汪”叫,而变成“呜呜”叫。

试通过继承来达到目的

          function Dog(){
2 this.bark = function(){
3 alert("汪汪");
4 }
5 }
6 var huahua = new Dog();
7 huahua.bark();//huahua会汪汪叫
8
9 function Yellowdog(){
10 this.eat = function(){
11 alert("我会看家");
12 }
13 }
14 Yellowdog.prototype =new Dog();
15 var yellowdog = new Yellowdog();
16 yellowdog.bark();//同伴yellowdog也会汪汪叫
17 直接改原型对象的属性
18 Yellowdog.prototype.bark = function(){ alert("呜呜");};
19 var newdog = new Yellowdog();
20 newdog.bark();//新出生的狗只能呜呜叫

14行yellow.bark()是继承Dog也就是原型对象

18行直接改写原型对象的方法即改写Dog的方法