2017-08-18 6 views
0

は考える:JavaScriptのクラスのインスタンスメソッドはどこに保存されていますか?

var car = class Car{ 
    drive() {} 
    park(){} 
} 

は車を考えると、どのように私はこのクラスは、 すなわち「ドライブ」と「公園」を持っているものな方法を見つけることができますか? 私は、彼らはそれが

car.prototype.drive 

は方法 と

car.prototype.hasOwnProperty("drive") => true 

しかし

for(let prop_name in car.prototype){ 
    console.log(prop_name) 
} 
を返すことは事実だ

car.prototype

に思っていただろう

は何も印刷しません。

+0

ここで注意 '奇妙です。 –

+0

何が問題なのですか? – guest271314

+0

あなた自身の質問に答えました。それらはプロトタイプオブジェクトに格納されています。なぜ 'for''がそれらを列挙しないのか、そしてそれらにアクセスする方法は、複製を参照してください。 – Bergi

答えて

0

プロパティは列挙できません(car.prototype.propertyIsEnumerable("drive") === false)。したがって、表示されません。 MDNを参照してください。

は、そうでなければ、あなたが正しいのために... オブジェクトの列挙可能なプロパティ以上の文を反復処理で、原稿挿入のために

は、関数がプロトタイプであるザ・。

これはではなく、であり、インスタンスメソッドであることに注意してください。インスタンスメソッドは、名前がすでに暗示しているように、インスタンスごとに1回存在します。インスタンスメソッドを生成することができます。

class car { 
    constructor() { 
    this.instanceFunc =() => {}; 
    } 
} 

でin`のための明示的new car().instanceFunc !== new car().instanceFunc

関連する問題