Я запутался в call (), почему мой код не работает? - PullRequest
0 голосов
/ 12 октября 2019

Я бы хотел вызвать функцию из Mammal для использования с Cat. Я думал, что понял это, но каждый раз, когда я пытаюсь использовать это, я действительно запутываюсь.

function Mammal(legs,sound, commonName) {
    this.legs = legs;
    this.sound = sound;
    this.commonName = commonName;
    this.talk = function() {
        console.log(this.sound);
    }
}

const wolf = new Mammal(4, 'GRRRRRR', 'Wolf');

const dog = new Mammal(4, 'WOOF', 'Dog');

console.log(wolf)
console.log(dog.talk())

const cat = function(legs, sound, commonName) {
this.legs = legs;
this.sound = sound;
this.commonName = commonName;
Mammal.call(this, talk)
}

const lion = new cat(4, 'RAWR', 'Lion');

Я хочу использовать разговор в контексте льва.

1 Ответ

2 голосов
/ 12 октября 2019

Вы были очень близки. Вам просто нужно добавить параметры в функцию Mammal.call ().

function Mammal(legs,sound, commonName) {
    this.legs = legs;
    this.sound = sound;
    this.commonName = commonName;
    this.talk = function() {
        return this.sound;
    }
}

const wolf = new Mammal(4, 'GRRRRRR', 'Wolf');

const dog = new Mammal(4, 'WOOF', 'Dog');

const cat = function(legs, sound, commonName) {
    this.legs = legs;
    this.sound = sound;
    this.commonName = commonName;
    Mammal.call(this, legs, sound, commonName);
}

const lion = new cat(4, 'RAWR', 'Lion');

console.log(lion.talk())

Я изменил Mammal.call (это, разговор) на Mammal.call (это, ноги, звук, commonName).

Надеюсь, это то, что вы просили! Дайте мне знать, если это не так.

Редактировать: Я также только что заметил, что я заменил console.log () внутри функции "talk" на "return this.sound" и затем самую последнюю строкуЯ делаю "console.log (lion.talk ())"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...