Angular 4 Class vs new ClassName()Difference

时间:2018-04-26 14:29:06

标签: angular typescript typescript2.0

我有一个示例应用程序,其中包含以下模型。

产品类别包含股票和类别类别并将产品类别传递给组件。

在产品组件中,我需要使用哪一个在三个不同的网格中进行绑定。

 productResposne = new Product();  // which is best 1st 

  productResponse = Product;  // What is the main difference between 1st and 2nd.

   productResposne = Array<Product>[]; //3rd 



 export class ProductComponent implements OnInit{



       productResponse = Product;

    or 
    productResposne = new Product();

    or 

    productResposne = Array<Product>[]

结构;

export class Product{

productId:number;
productName:string;
productprice:number;
productcategory:ProductCategory;
productstocks:Stocks;

}

export class ProductCategory{
categoryID:number;
categorytype:string;
categoryPlace:string;

}

export class Stocks{
StockId:number;
StockQty:number;
StocktotalPrice:number;

}


In component:


export class ProductComponent implements OnInit{

productResponse = Product;

or 
productResposne = new Product();

or 

productResposne = Array<Product>[]


ngOnInit(){
this.getProduct();
}
 getProduct(){
 this._productService.getProduct(productId).subscribe(responsess => {

// get the response
 this.responsess = responsess;

bind in category grid
    this.ProductCategory = responsess[0].ProductCategory;

/

/ bind ins stock grid
    this.Stocks = responsess[0].Stocks;
// bind in product grid
    this.Product = responsess[0].Product;

    // These 3 resposes show it in three different grid

    }),(err)=> {this.errorMsg =<any>err};


    }

代码工作正常,我需要知道这两者之间的区别:

productResposne = new Product();  // which is best 1st 

  productResponse = Product;

这是最佳策略。

2 个答案:

答案 0 :(得分:4)

正如您可能(或可能不知道)所知,Typescript需要编译器才能工作。

编译代码后,它是有效的Javascript。

在Javascript中,本身没有类:函数处理对象创建。

所以当你写那个

productResposne = new Product();

调用函数来创建对象

当你打电话时

productResponse = Product;

使用其他参考引用该功能。

答案 1 :(得分:0)

这只是指针的一个简单例子:如果你不使用new,在引用对象时你会更改它的值,如果你把对象放在一个变量中就会发生这种情况接下来你也改变了它的价值。

当然最好的策略是使用new,因为您可以随时引用该对象,创建该对象的singleton(如果我们可以这样调用),将其视为界面