codeacademy的代码片段中的错误是什么

时间:2013-07-13 13:14:47

标签: javascript

当我运行以下代码时,出现错误:TypeError: Object [object Object]

// create your Animal class here

function Animal(name, numLegs)
{
    this.name = name;
    this.numLegs = numLegs;
}

// create the sayName method for Animal

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

为什么?

2 个答案:

答案 0 :(得分:5)

我认为这是问题

   Animal.prototype = function sayName(){

     console.log("Hi, my name is [name]");

   };

应该是

   Animal.prototype.sayName = function(){

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

   };

此外[name]不是javascript:S

Demo

答案 1 :(得分:2)

动物原型设置不正确:

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

将原型设置为函数并非完全错误,但问题是代码打算在原型对象上使用名为“sayName”的属性。提供名为“sayName”的函数不会用于此目的;该名称不作为函数对象的属性公开。

另请注意,只需将“[name]”放入记录到控制台的字符串中,就不会记录动物名称。你必须从对象的“name”属性中明确地将它修补到字符串中,就像我发布的代码一样。