2014-12-29 76 views
0

我一直在做很多HTML和CSS,现在我正在做一个JS教程。尽管我遇到了这个问题。我不知道如何访问原型。如何更改“动物”的原型并添加方法“sayName”来打印语句

说明:

创建一个名为动物具有两个属性,namenumLegs类。 Animal构造函数应该有两个参数,它们的值分配为namenumLegs

接下来,更改动物的原型,并添加一个方法sayName打印到控制台“您好,我的名字是[name]”,其中[name]是名称的值。

点击“卡住?获取提示!”有关如何创建类以及如何将方法添加到对象原型的示例。

最后,我们提供了最后两行来测试你的构造函数和sayName方法。不要改变这些!

这里是我的代码:

// create your Animal class here 
function Animal(name, numLegs)={ 
    this.name=name; 
    this.numLegs=numLegs; 

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


// create the sayName method for Animal 

// provided code to test above constructor and method 
var penguin = new Animal("Captain Cook", 2); 
penguin.sayName(); 

我得到一个语法错误。是什么赋予了?

+1

侧面说明,你没有按照指示! 'sayName'应该添加到原型中,而不是在构造函数中定义。 – Tserkov

+0

继承,构造函数和原型在此处详细介绍:http://stackoverflow.com/a/16063711/1641941 – HMR

+0

无关的提示:将“this”分配给构造函数中的命名变量以避免继承问题可能很明智用'this'。例如'var self = this;'在构造函数的开头,然后在内部定义的函数内使用'self'来代替'this'。这样它将始终使用构造函数作用域的'this'而不是当前函数的作用域'this'。 – Makaze

回答

5

我相信你的函数声明之后的语法错误是由于等号:

function Animal(name, numLegs)= 

如果删除等号,该函数不抛出一个语法错误了(我试了一下刚才在Chrome的控制台中)。

0

您可以检查我的代码,它的工作:

Animal.prototype.sayName = function(){ 
    console.log("Hi my name is" + " " + this.name); 
}; 
0
// create your Animal class here 
function Animal(name, numLegs) { 
    this.name = name; 
    this.numLegs = numLegs; 

    // create the sayName method for Animal 
    Animal.prototype.sayName = function() { 
     console.log("Hi my name is " + [this.name]); 
    } 
}; 

// provided code to test above constructor and method 
var penguin = new Animal("Captain Cook", 2); 
penguin.sayName();