Как инициализировать класс, в котором есть метод

#javascript #asp.net

#javascript #asp.net

Вопрос:

Это мой родительский класс

 export class Book
{
    constructor(source: price){
        this.name= source.name;
        this.auther= source.auther;
        this.series= source.series;
        this.pricedeatils= source.pricedeatils amp;amp; source.pricedeatils.map(a=>new price(a));
    }
    name: String;
    auther: String;
    series: String;
    pricedeatils: Array<price>;
}
  

Это дочерний класс, у которого есть метод setPrice

 export class price
{

    constructor(source: price){
        this.price1 = source.price1;
        this.price2 = source.price2;
        this.price3 = source.price3;
        this.price4 = source.price4;
        this.price5 = source.price5;
        this.price6 = source.price6;
        this.price7 = source.price7;
    }
    price1: Number; 
    price2: Number;
    price3: Number;
    price4: Number;
    price5: Number;
    price6: Number;
    price7: Number; 
    public setPrice( lcol:number,lnprice:number)
    {     
        this["price"  lcol]=  lnprice:  
    }
}
  

я инициализирую свой класс следующим образом

 setInis_master(){

    let details1    :price[]= []; 

    let ls_dynstructure:  Book= {
        name: "";
        auther: "";
        series: "";
        pricedeatils:  :details1     

    }
    return ls_dynstructure;
}



iniprice(){
    let ls_price:  price= {
        price1: 0; 
        price2: 0;
        price3: 0;
        price4: 0;
        price5: 0;
        price6: 0;
        price7: 0;
    }
    return ls_price:
}

this.lbook=  new Book(this.setInis_master())

let obvm1:price =  new price(this.iniprice())
obvm1 =await this.iniObject(irow,obvm1)   
this.lbook.pricedeatils.push(obvm1)
  

но я не могу вызвать метод в дочернем классе

 this.lbook.pricedeatils[0].setPrice(1,70)
  

В чем может быть причина? я неправильно инициализирую класс?

Комментарии:

1. Что this.iniObject() делает с ценой obvm1?

2. это.iniprice()

3. Я имею в виду эту строку: obvm1 =await this.iniObject(irow,obvm1) Я не вижу this.iniObject() функции, определенной здесь. Поскольку setPrice() — это метод объектов price, я предполагаю, что между let obvm1:price = new price(this.iniprice()) и this.lbook.pricedeatils.push(obvm1) , что код внутри obvm1 =await this.iniObject(irow,obvm1) делает obvm1 больше не объектом price.

Ответ №1:

дочерний класс должен расширять свой родительский класс для вызова его методов class price extends Book