Доступ к конструктору класса из другого класса

Я хотел бы узнать, как получить доступ к переменной, которую я сохраняю в конструкторе Presents, из класса 2 Presents2.

Здесь у меня есть код:

 <h1>Clases</h1>    

Классы

<script>

class Presents {
    constructor(fecha){
        this.fechVelocity = fecha;
    }

    init(){
        console.log("Inicializar");
        console.log(this.fechVelocity);
        return this.fechVelocity;
    }
}

class Presents2 extends Presents {
    constructor(fechVelocity){
       super();
    }

    init2(){
        console.log("Inicializar2");
        console.log(this.fechVelocity);
    }
}

  let present = new Presents(20192111);
  let present2 = new Presents2();
  present.init();
  present2.init2();
</script>

Я всегда получаю неопределенный, и я не знаю, как получить доступ, у вас есть идея =

0
задан 27.11.2019, 15:50
2 ответа

В примере, что ты показываешь present и present2 ser¦-an две различные инстанции , он не, что, создав present и потом создав present2 ésta trabajarÃ: с которым уже ты создал aquà - let present = new Presents(20192111);. Он не asà - как функционирует наследство.

Для того, чтобы present2 содержал информацию, у тебя есть, что:

  1. Перемещать эту информацию, когда ты будешь верить в инстанцию: let present2 = new Presents2(20192111);
  2. Перемещать информацию в класс отец, используя método super в Presents2

мы Будем исправлять:

class Presents {
    constructor(fecha){
        this.fechVelocity = fecha;
    }

    init(){
        console.log("Inicializar");
        console.log(this.fechVelocity);
        return this.fechVelocity;
    }
}

class Presents2 extends Presents {
    constructor(fechVelocity){
       super(fechVelocity); //Esto es fundamental
    }

    init2(){
        console.log("Inicializar2");
        console.log(this.fechVelocity);
    }
}

  let present = new Presents(20192111);
  let present2 = new Presents2(20192111); //Esta es una nueva instancia, debes pasar el dato al constructor
  present.init();
  present2.init2();

Относительно método init2(), éste s¦lo tendr¦ - в чувство, если делало чего-то отличного , в которое делает в классе отец. Если это, чтобы делать то же самое, ты не должен объявлять снова один método сходно, а использовать тот отца.

Давайте Видеть пример, где объект типа Presents2 может использовать método init() из Presents:

class Presents {
    constructor(fecha){
        this.fechVelocity = fecha;
    }

    init(){
        console.log("Inicializar... estamos en el padre");
        console.log(this.fechVelocity);
        return this.fechVelocity;
    }
}

class Presents2 extends Presents {
    constructor(fechVelocity){
       super(fechVelocity); //Esto es fundamental
    }

}

  let present = new Presents(20192111);
  let present2 = new Presents2(20200822); //Esta es una nueva instancia, debes pasar el dato al constructor
  present.init();
  present2.init(); //Este es el método init de Presents

Восток - один из фундаментальных аспектов наследство .

Если, как ты говоришь в твоем комментарии, хочешь избежать перемещать present2 снова дата, único, которую ты должен делать, состоит в том, чтобы создавать единственный объект типа Presents2.

Например:

class Presents {
    constructor(fecha){
        this.fechVelocity = fecha;
    }

    init(){
        console.log("Inicializar... estamos en el padre");
        console.log(this.fechVelocity);
        return this.fechVelocity;
    }
}

class Presents2 extends Presents {
    constructor(fechVelocity){
       super(fechVelocity); //Esto es fundamental
    }

}

  let present2 = new Presents2(20192111);
  present2.init(); //Este es el método init de Presents

В этот ответ у тебя есть пример mÃ: s я завершаю, что он объясняет c¦mo, функционирует наследство.

5
ответ дан 01.12.2019, 10:46
  • 1
    @otacon070, если ты читаешь хорошо мой ответ сначала podrá s quizá падать в счет, которого твой подход неправильный. ¿ Из-за qué serí в необходимый перемещать снова дату presents2? Если то, что ты хочешь, это, создай объект типа Presents2 и я заношу в список. Если ты создаешь инстанцию объекта и потом другая, эти объекты не являются взаимозаменяемыми. Даже, если ты создаешь два объекта, отличных от типа Presents и не перемещаешь один дату, не podrá s соглашаться на эту информацию. Не sé если ты понимаешь меня. – A. Cedano 27.11.2019, 16:37
  • 2
    @otacon070 проверь третий фрагмент có я говорю, что я поместил в конце ответа. Ahí создается só я возражаю против этого и используется mé совсем init из Presents. Это один из фундаментальных аспектов наследство . Quizá confusió n он состоит в том, чтобы думать, что, когда ты получаешь в наследство, ты должен создавать инстанции как отца, так и сына ¿? Наследство позволяет сыну использовать все то, что отца , свойства, mé все, и т.д. – A. Cedano 27.11.2019, 16:43
  • 3
    моя идея., который я сейчас вижу, что она спутана, был что дата, которая перешла с ним в два класса, fuerá только перемещенная инстанцию первого объекта . Дело не в том, что твоя идея была неправильной. Это делается в super() Presents2. Но когда ты будешь верить в инстанцию , ты должен перемещать его pará метры , если ты не перемещаешь его параметры инстанция класса, он создается без чего-либо, поэтому он давал тебе всегда undefined. – A. Cedano 27.11.2019, 16:45
  • 4
    @otacon070, если данный ответ решает проблему, ты можешь помечать ее, для того, чтобы вопрос они не появились, не решая, и ответ смог подавать будущих пользователей со сходной проблемой. Привет. – A. Cedano 27.11.2019, 17:17
  • 5
    @otacon070 ¿ Этот ответ solucionó твоя проблема? Пожалуйста не забывай пометить ее как принятая, если твоя проблема была решенной. Ты можешь делать это помечая вњ “в левой части ответа (pondrá зелень, ganará s 2 точки reputació n и podrí схвати соглашаться на новых привилегий ). ¡ Смотри ¿ Qué я должен делать, когда кто-то отвечает на мой вопрос? , если у тебя есть какое-то сомнение! – Marcos 28.11.2019, 19:55

Покажи undefined, из-за которых не estÃ: s перемещая parÃ: метры в класс отец. AcÃ: я присоединяю пример, где я считаю классом отца "VideoGame", который Ваш строитель получает 2 parÃ: метры: name и publication и у меня есть класс Fifa, который является классом, который увеличивает класса отец, из-за чего он env¦ - в в строителя parÃ: метры самого класса Fifa и ademÃ: s супер класса, которого в этом случае VideoGame.

class VideoGame {
    constructor(name = '',publication = '' ){
        this.Name = name;
        this.Publication = publication;

    }
    GetName(){
        return this.Name
    }
    GetPublication(){
        return this.Publication
    }
}
class Fifa extends VideoGame {
    constructor(name = '',publication = '', ){
        super(name,publication);

    }
    GetFullNameVideoGame(){
        return (`This is ${this.Name} ${this.Publication}`)
    }
}
const objVideoGame = new VideoGame("MegaMan", "2000");
console.log(objVideoGame.Name)
console.log(objVideoGame.Publication)
const objVideoGameFifa = new Fifa("Fifa EA Sport", "2019");
console.log(objVideoGameFifa.Name)
console.log(objVideoGameFifa.Publication)
console.log(objVideoGameFifa.Name)
console.log(objVideoGameFifa.GetFullNameVideoGame())
1
ответ дан 01.12.2019, 10:46