I'm new to JS, still struggling in understanding 'this' in Chaining Constructor Functions. Below is an example:
let Product = function(name, price) {
   this.name = name;
   this.price = price;
}
let TaxedProduct = function(name, price, taxRate) {
   Product.call(this, name, price);
   this.taxRate = taxRate;
}
let hat = new TaxedProduct("Hat", 100, 1.2); 
I don't understand why we should use Product.call(this, name, price);, why can't we just use Product(name, price);? I understand 'this' is used for binding, but in the construction of TaxedProduct, this is already referred  to newly created TaxedProduct object, so use Product(name, price); is pretty much like copy and paste the Product construction content into TaxedProduct's as:
let TaxedProduct = function(name, price, taxRate) {
   //Product(name, price);  just like copy and paster below two statements
   this.name = name;
   this.price = price;     
   this.taxRate = taxRate;
}
