关于javascript的继承codecademy教程

时间:2013-07-13 13:38:06

标签: javascript

  

让我们说我们正在处理很多企鹅。创建一个Penguin类肯定会很好,所以以后我们可以给它一些独特的企鹅方法,而不是把它与Animal类混淆。

     

说明

     

创建一个新的Penguin类构造函数。企鹅是动物,所以它也应该有name和numLegs属性以及sayName方法,它打印与Animal的sayName方法相同的东西。

     

我们还没有完成动物,所以我们仍然包含了Animal构造函数及其sayName方法。最后两行测试你的企鹅代码。

我的代码在哪里出错?

                  function Animal(name, numLegs) {
                    this.name = name;
                  this.numLegs = numLegs;
                      }
                     Animal.prototype.sayName = function() {
                     console.log("Hi my name is "+this.name);
                };

            // create a Penguin constructor here

                  var penguin = new Penguin(name,numLegs);
                 function sayName(){

                 console.log("Hi, this is" + this.name);
                  };

                  // create a sayName method for Penguins here


                   // our test code
                   var theCaptain = new Penguin("Captain Cook", 2);
                  theCaptain.sayName();
                  var penguin = new Penguin("captain1",54)

2 个答案:

答案 0 :(得分:0)

可能不是练习所要求的,但这就是我要做的事情:

function Penguin () {
    Animal.apply(this, arguments);   
}
Penguin.prototype = Object.create(Animal.prototype);
Penguin.prototype.constructor = Penguin;

上面的代码使 Penguin 实例继承自 Animal sayName方法)。此外, Animal 构造函数用于设置 Penguin 实例的自有属性(腿的名称和数量)。

答案 1 :(得分:0)

这是练习的正确代码:

function Animal(name, numLegs) {
                    this.name = name;
                  this.numLegs = numLegs;
                      }
                     Animal.prototype.sayName = function() {
                     console.log("Hi my name is "+this.name);
                };

            // create a Penguin constructor here

                function Penguin(name, numLegs) {
                    this.name = name;
                  this.numLegs = numLegs;
                      }
                     Penguin.prototype.sayName = function() {
                     console.log("Hi my name is "+this.name);
                };
// provided code to test above constructor and method
var penguin = new Penguin("Captain Cook", 2);
penguin.sayName();