1. 程式人生 > >類中的方法(物件的原型中的方法)消失

類中的方法(物件的原型中的方法)消失

問題:

使用indexdb,sqlite等本地儲存後再取出物件導致類中的方法(物件的原型中的方法)消失。

解決方法

  • 使用Object.assign()合併對物件。這時,this.details中的每個元素都是RetailOrderDetailEditDto的例項化物件。

 

重新構造一個物件new RetailOrderDetailEditDto(), 這個物件中包含所需要的方法,toJSON等。

this.details = this.details.map(e => {
    this.amount += e.price * e.qty;
    
return e = Object.assign(new RetailOrderDetailEditDto(), e); });

 

  • 在Class 中新增構造方法

即在建立 RetailOrderDetailEditDto 類時,constructor可以接收data

 
 
 constructor(data?: IRetailOrderDetailEditDto) {
  if (data) {
      for (var property in data) {
          if (data.hasOwnProperty(property))
          (
<any>this)[property] = (<any>data)[property];   }   }

 

export class RetailOrderDetailEditDto implements IRetailOrderDetailEditDto {
    id: number | undefined;
    productId: number | undefined;
    productName: string | undefined;
    productSkuId: number | undefined;
        ...

    constructor(data
?: IRetailOrderDetailEditDto) { if (data) { ... } } init(data?: any) { ... } static fromJS(data: any): RetailOrderDetailEditDto { ... } toJSON(data?: any) { ... } }