次の場合のinsideFnとoutsideFnの違いを知りたい:
function Construct()
{
this.insideFn = function(obj){
....
}
}
Construct.prototype.outsideFn = function(obj){
...
}
どちらが効率的ですか?
次の場合のinsideFnとoutsideFnの違いを知りたい:
function Construct()
{
this.insideFn = function(obj){
....
}
}
Construct.prototype.outsideFn = function(obj){
...
}
どちらが効率的ですか?
最初のケースでは、 で作成されたすべてのインスタンスConstruct
に独自の がinsideFn
あり、複数のインスタンスを使用する場合にメモリを浪費します。2 番目のケースでは、 の各インスタンスはConstruct
への参照のみを持ちますoutsideFn
。だから後者がいい。
最初の構成では、メソッドは のインスタンスの属性ですConstruct
。2 番目の構成では、メソッドはprototype
オブジェクトの属性です。Construct
オブジェクト内で関数を定義するprototype
と、呼び出し時に同じになります。多くの場合、prototype
バリアントはメモリを節約し、コードを高速化します。オブジェクトのインスタンス内で関数をオーバーロードしてprototype
、オブジェクトのデフォルトの動作を変更することもできます。
より良い英語とより多くの詳細については、http: //www.javascriptenlightenment.com/ を参照してください。
最初のものfunction Construct() {}
はクラスです(javascriptではオブジェクトです)が、後でキーワードを使用してこのクラスを継承(拡張)し、prototype
もう1つの関数を追加しますoutsideFn
。JavaScript には特定のクラスがないため、オブジェクトをクラスとして使用する必要があります。