2017-06-09 9 views
0

私は、リテラルオブジェクトがクラスからプロパティとメソッドを継承できるかどうか考えていました。コードはこちらリテラルオブジェクトはクラスから継承できますか?

var Foo = function(val1, val2) { 
    this.prop1 = val1; 
    this.prop2 = val2; 
} 

var bar = { 
    //how to inherit properties from Foo class; also add new property 
    prop3: 'val3' 
}; 
+0

@Jonaswけれども、これはSOに適した質問ではないかもしれないが、私が教えられた人たちのものは明らかに優れた人についていくことになっている質問を尋ねることによって学習する方法を思っていました明らかに物事を学ぶ人のように?あなたの上司に「教えてもらう」というテクニックを教えてください。 (申し訳ありませんが、私はそこに2つの質問をしました、私は他の方法を知らない) – gforce301

+0

@ gforce301いいえ!まだお聞きください。私は助けてうれしいです。しかし、その質問は、彼の本の次の章/チュートリアルの一部で彼が答えを見つけるのと同じように見えます。そして今日の彼の最初の質問ではありません... –

+0

_ "最初に学んでください、そして質問してください。もちろん、尋ねることで学ぶことができます。学習のルートに独占はありません。すでに学んでいる人は、どうして質問する必要がありますか?自分自身を除いて – guest271314

答えて

0

コード内に継承がありません。

var Foo = function(val1, val2) {} 
Foo.prototype={ 
    prop1:val1, 
    prop2:val2 
}; 

var bar = { 
//how to inherit properties from Foo class; also add new property 
prop3: val3 
}; 

そして今、あなたが行うことができます:あなたはFooのインスタンスを作成することによって、これを達成でき

var instance=new Foo(); 
Object.assign(instance,bar); 
+0

実際に私はこのような何かを考えていた: 'var Foo = function(val1、val2){ this.prop1 = val1; this.prop2 = val2; }; VARバー= { \t prop3 'val3は' \t inherit_from_Foo:関数(VAL1、VAL2){ \t \t Foo.call(この、VAL1、VAL2)。 \t} }; ' –

+0

@vincent thorpeだから、コンストラクタ関数から継承したいのですか? –

+0

@vincent thorpe httwww://stackoverflow.com/questions/7785955/inherit-parent-constructor-arguments –

0

と:

Object.setPrototypeOf(bar, /*to*/ Foo.prototype); 

または別のオブジェクトを作成継承は次のようになります。そのようなインスタンスにプロパティを追加します。

var Foo = function(val1, val2) { 
    this.prop1 = val1; 
    this.prop2 = val2; 
} 

var x = new Foo('valOfProp1', 'valOfProp2'); 

x.prop3 = 'valOfAddedProp'; 
+0

しかし、もし私がそれを行うなら、それは文字どおりのオブジェクトになりますか? –

0

次のようにします。

var Foo = function(val1, val2) { 
 
    this.prop1 = val1; 
 
    this.prop2 = val2; 
 
}; 
 

 
Foo.prototype.getProp = function(p){ 
 
    return this[p]; // NOT!! this.p 
 
}; 
 

 
var bar = { 
 
    //how to inherit properties from Foo class; also add new property 
 
    prop3: "val3" 
 
}; 
 

 
Object.setPrototypeOf(bar,Foo.prototype); 
 
console.log(bar.getProp("prop1")); 
 
console.log(bar.getProp("prop2")); 
 
console.log(bar.getProp("prop3"));

関連する問題