向对象添加原型方法

Adding a prototype method to an object

本文关键字:方法 原型 添加 对象      更新时间:2023-09-26

我正在Code Academy做一个javascript教程。问题在这里(链接):

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

sayHello应该打印到控制台:"Hello this is a [breed] dog",其中[breed]是狗的品种。

下面是我的代码:

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方法没有正确地记录到控制台'Hello这是一只[breed]狗',其中[breed]是狗的品种

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

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

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

它说它是"正确的"

你的代码看起来不错,我认为这是CA的问题。

如果你把它改成:

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

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

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

Ref: MDN: console.log

使用不带替换字符串的旧形式也可以:

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