2017-09-11 6 views
2

これは、プロトタイプの継承とプロパティ 'stealing ??' /継承を行う正しい方法ですか? Personコンストラクタとすべてのメソッドからすべてのプロパティを継承したいとします。JavaScriptプロトタイププロパティstealing/inheritance

function Product(name, price) { 
    this.name = name; 
    this.price = price; 
} 
Product.prototype.tellMe = function() { 
    console.log('Name = ' + this.name + ', Price = ' + this.price); 
} 

function Food(name, price, category) { 
    Product.call(this, name, price); 
    this.category = category; 
} 
Food.prototype = Object.create(Product.prototype); 
Food.prototype.constructor = Food; 

var b = new Food('Name', 123, 'Category'); 
console.log(b); 
b.tellMe(); 
var a = new Product('Name2', 321); 
console.log(a); 

私には良い例がありますか? ありがとう!

答えて

0

最新のjavascript標準であるECMA6を使用すると、Java OOPと同様の方法でクラスを作成して継承を実行できます。 Java OOPをよく熟知している開発者として、私はこのアプローチが非常に理解しやすく、適応しやすいと考えています。あなたのコードを書き換えて、添付のスニペットを見てください。それが役に立てば幸い。

'use strict'; 
 
class Product{ 
 
    constructor(name,price){ 
 
    this.name = name; 
 
    this.price = price; 
 
    } 
 
    
 
    tellMe(){ 
 
     console.log('Name = ' + this.name + ', Price = ' + this.price); 
 
    } 
 
} 
 

 
class Food extends Product{ 
 
    constructor(name, price, category){ 
 
    super(name, price); 
 
    this.category = category; 
 
    } 
 
} 
 

 
var b = new Food('Name', 123, 'Category'); 
 
console.log(b); 
 
b.tellMe(); 
 

 
var a = new Product('Name2', 321); 
 
console.log(a);

関連する問題