C# プログラマーとして、私はプライベートにすることができ、プライベートにするべきものをプライベートにする習慣があり、JS 型がすべてのプライベートな部分を私にさらすと、いつも奇妙な気分になります (そして、その気持ちは「興奮」しません)。 )。draw
内部的にdrawBackground
andを呼び出すメソッドを持つ型があるdrawForeground
とします。これは、単独で呼び出されても意味がありません。これをどのように実装すればよいですか?
オプション1
Foo = function(){
this.draw();
};
Foo.prototype.draw = function(){
this.drawBackground();
this.drawForeground();
};
Foo.prototype.drawBackground = function(){};
Foo.prototype.drawForeground = function(){};
オプション 2
Foo = (function(){
var constructor = function(){
this.draw();
};
var drawBackground = function(){};
var drawForeground = function(){};
constructor.prototype.draw = function(){
drawBackground.call(this);
drawForeground.call(this);
};
return constructor;
})();
もちろん違いは、最初の例ではdrawBackground
anddrawForeground
メソッドがパブリック API の一部であるのに対し、2 番目の例では外部に隠されていることです。それは望ましいことですか。どちらを優先する必要がありますか? C# の習慣を Javascript に適用するのは間違っていますか? Javascript ですべてを拡張可能にしてオーバーライド可能にする必要がありますか? そして、のパフォーマンスへの影響は.call(this)
何ですか?