1
、私はこの2つのコードがあります。クロージャ内でプロトタイプを作成する方法は?ここで
var mod = function() {
var a = function() {
this.fucname = 'hello';
};
a.prototype.build = function() {
return 'before '+this.fucname;
};
return new a();
};
for(var i=0; i<10000; i++){
var newfuc = mod();
};
と
var a = function() {
this.fucname = 'hello';
};
a.prototype.build = function() {
return 'before '+this.fucname;
};
for(var i=0; i<10000; i++){
var newfuc = new a();
};
を私はクロームdev内の両方をチェックした後、第二のコードはJSヒープ3.0メガバイトを取る、 最初のコードJSを取りますHEAP 10MB。
つまり、ビルド機能は最初のコードで10000回作成されましたか?カバーを外さずにどのように修正することができますかmod
?私は関数に何かを渡す必要があり
...
'build'と' a'の両方の関数です。あなたが対処しなければならない現実的な状況の「モジュール」を10,000倍呼びますか? – Ryan
はい、また、いくつかの変数を内側に置いて、 "mod"のカバーを外さずに渡す必要があることに注意してください。 – user3769916
したがって、 'mod'関数を持つようにコードを変更してください正当化された。 – zerkms