次の場合の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 には特定のクラスがないため、オブジェクトをクラスとして使用する必要があります。