3

次の場合のinsideFnoutsideFnの違いを知りたい:

 function Construct()
 {       
   this.insideFn = function(obj){
   ....
   }
 }

 Construct.prototype.outsideFn = function(obj){
      ...
 }

どちらが効率的ですか?

4

3 に答える 3

5

最初のケースでは、 で作成されたすべてのインスタンスConstructに独自の がinsideFnあり、複数のインスタンスを使用する場合にメモリを浪費します。2 番目のケースでは、 の各インスタンスはConstructへの参照のみを持ちますoutsideFn。だから後者がいい。

于 2012-10-26T09:28:43.480 に答える
0

最初の構成では、メソッドは のインスタンスの属性ですConstruct。2 番目の構成では、メソッドはprototypeオブジェクトの属性です。Construct

オブジェクト内で関数を定義するprototypeと、呼び出し時に同じになります。多くの場合、prototypeバリアントはメモリを節約し、コードを高速化します。オブジェクトのインスタンス内で関数をオーバーロードしてprototype、オブジェクトのデフォルトの動作を変更することもできます。

より良い英語とより多くの詳細については、http: //www.javascriptenlightenment.com/ を参照してください。

于 2012-10-26T09:35:35.607 に答える
-1

最初のものfunction Construct() {}はクラスです(javascriptではオブジェクトです)が、後でキーワードを使用してこのクラスを継承(拡張)し、prototypeもう1つの関数を追加しますoutsideFn。JavaScript には特定のクラスがないため、オブジェクトをクラスとして使用する必要があります。

于 2012-10-26T09:27:36.540 に答える