将原型方法添加到对象

时间:2014-07-06 00:00:49

标签: javascript

我在Code Academy上做了一个javascript教程。这是问题(link):

  

通过扩展其原型,将sayHello方法添加到Dog类。

     

sayHello应该打印到控制台:“你好,这是一只[品种]狗”,   [品种]是狗的品种。

这是我的代码:

function Dog (breed) {
    this.breed = breed;
};

// add the sayHello method to the Dog class 
// so all dogs now can say hello
Dog.prototype.sayHello = function() {
    console.log("Hello this is a %s dog", this.breed);
}


var yourDog = new Dog("golden retriever");
yourDog.sayHello();

var myDog = new Dog("dachshund");
myDog.sayHello();

我的输出:

  

你好,这是一只金毛狗

     

你好,这是一只腊肠犬

我得到的错误:

  

哎呀,再试一次。看来你的sayHello方法没有正确登录到控制台'你好这是一只[品种]狗,其中[品种]是狗的品种

这是CA代码检查程序的问题还是我做错了什么?

3 个答案:

答案 0 :(得分:3)

无论CodeAcademy使用什么方法来检查结果,它都不喜欢您处理文本的方式。当我这样做时:

console.log("Hello this is a " + this.breed + " dog");

它说这是“正确的”。

答案 1 :(得分:1)

您的代码对我来说很好,我认为这是CA的一个问题。

如果您将其更改为:

Dog.prototype.sayHello = function() { console.log("Hello this is a " + this.breed + " dog"); }

然后CA没有抱怨并说它是正确的。

答案 2 :(得分:1)

在所有版本的Javascript中都不支持在console.log中使用替换字符串。例如,Internet Explorer 9不支持它们。

参考:MDN: console.log

使用没有替换字符串的旧表单:

console.log("Hello this is a " + this.breed + " dog");