为了账号安全,请及时绑定邮箱和手机立即绑定

prototype的问题

 function Animal(name) { 

    this.name = name;

 } 

 Animal.prototype = {

    weight: 0, 

    eat: function() { 

        alert( "Animal is eating!" ); 

    } 

 }


 function Mammal() { 

    this.name = "mammal"; 

 } 

 Mammal.prototype = new Animal("animal"); 

 function Horse( height, weight ) { 

    this.name = "horse"; 

    this.height = height; 

    this.weight = weight; 

 }

 Horse.prototype = new Mammal(); 

 Horse.prototype.eat = function() { 

    alert( "Horse is eating grass!" ); 

 }

 var horse = new Horse( 100, 300 ); 

问题:

  1. Horse.prototype===?为true

  2. Mammal.prototype===?为true

  3. Animal.prototype===?为true

正在回答

2 回答

答案是:

Horse.prototype===horse.__proto__

Mammal.prototype===Horse.prototype.__proto__

Animal.prototype===Mammal.prototype.__proto__

本来我问问题的疑惑是 不清楚prototype ,proto和constructor它们的作用和意义

上面例子Animal,Mammal,Horse的prototype都被重写了,Animal.prototype.constructor!==Animal ,Mammal和Horse也是一样,__proto__就是[[proto]]也就是对象的指针,这个对象指针指向自己构造函数的prototype.

1 回复 有任何疑惑可以回复我~

你的问号是什么意思


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

prototype的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信