これはおそらく最も安全な方法です (ケース A ):
var myClass = function() { };
myClass.prototype = {
doSomething : function() { alert('Something'); }
};
これは別の方法です (ケース B ):
var myClass = function() {
this.doSomething = function() { alert('Something'); };
};
ケース B に示すようにこれを行うと、doSomething がメンバーになり、インスタンス化する myClass オブジェクトごとに関数が 1 回定義され、100 インスタンスのメモリに 100 回存在するという印象を受けます。ケース A 関数はメモリ内の 1 つの場所にのみ存在し、異なるインスタンスはプロトタイプを参照するだけです。
私はこれを正しく理解していますか?
おまけの質問として: ケース B のように実行すると、クロム開発者は doSomething のインテリセンスを提供しますが、それを表示するには、インスタンスの __proto__ を展開する必要があります。オブジェクト自体に表示されないのはなぜですか?つまり、プロトタイプ メンバーがオブジェクトに表示されないのに、__proto__ でスタックしてしまうのはなぜでしょうか? __proto__ スタックがフラット化されて、オブジェクトに直接表示されるようになればよかったのにと思います。これを可能にする別のケースはありますか?