我当时正在挑战

时间:2018-08-30 19:00:53

标签: javascript

我正在挑战,其中一个问题似乎是我得到了正确的答案,但没有通过。需要帮助来了解为什么没有。

挑战:向Person的原型添加一个名为“ shoutName”的方法,该方法以所有大写字母返回该人的名字。

function Person(name) {
    this.name = name;
    this.shoutName = function() {
        name.toUpperCase();
        return '"' + name.toUpperCase()+'"'
    }
}

/* Do not modify the code below this line */

const john = new Person('John');
console.log(john.shoutName(), '<-- should be "JOHN" ');

2 个答案:

答案 0 :(得分:1)

说要向构造函数的原型添加函数的问题。

您没有那样做。您修改了构造函数,以便在创建实例时将函数动态添加到实例。

Person.prototype.shoutName = function () {
    return this.name.toUpperCase();
}

您的函数还将结果值括在引号中,而问题并没有要求您这样做。

答案 1 :(得分:0)

从您的小照片中,我注意到您的代码是:

return '"' + name.toUpperCase() + '"';

不确定为什么要添加引号,只需return this.name.toUpperCase();,它就可以正常工作。您应该引用对象的属性,而不是仅输入name的输入值。

此外,将name.toUpperCase();单独放在一行上不会做任何事情。不必要的计算,因为该函数会返回您未分配的值。