最近、私の仕事のほとんどはjsの開発に関連しています。作成する内部関数のコピー数
しかし、突然私はいくつかの質問と混同していることがわかりました。
チェックこのコード(私はカスタムクラスに1つのメソッドを追加します):今すぐ
MyCustomClass.prototype.fun=function(xx){
this.options={.....}
function innerFun01(){}
function innerFun02(){}
}
、それを使用しています。
var mcc=new MyCustomClass();
mcc.fun(xxxx);
var mcc2=new MyCustomClass();
mcc2.fun(xxxx);
"innerFun01"と "innerFun02"という関数のコピーがメモリにいくつ作成されるのだろうか?
私は本当に混乱しています。
これはメモリの浪費ですか?それらを変更するための任意のアイデア?しかし、私はそれらを公開したくないので、私はそれらを外に定義したくありません。 – hguser
これは本当に記憶の浪費ではありません。それらはインスタンス化されますが、メソッド 'fun'が実行された後に投げ捨てられます。 JavaScriptのガベージコレクタはすぐ後に来て、それらを収集し、それらを投げる。 – Stephen
Erlangの著名人であるJoe Armstrongは、開発者にできるだけ「最も美しいコードを書く」ように促し、その言語の問題に対するこうした心配に応えています。 *アルゴリズム的に*健全なコードを作成し、極端な(起こりそうにない)場合にのみそのようなことを心配してください。 – Pointy