私は、関数コンストラクタを使用して関数を生成するライブラリに取り組んでいます。アクセスを含むアクセス
生成される各関数は、optionsパラメータのデフォルト値を格納するために、default
という関数にアタッチされたプロパティを持ちます。
var generated_function = function(arg1, arg2, options_arg){ ... }
generated_function.default = {}
代わりに、このような関数の中にそれを保存する機能のプロパティとしてデフォルトを取り付けるための理由:そうのような
var generated_function = function(arg1, arg2, options_arg){
default = {}
}
私はオプションがしたいということです必要に応じて実行時にデフォルト設定を変更します。
デフォルトのオプションは100sまたは1000sのプロパティで構成された大きなオブジェクトであり、引数のオプションはデフォルトでは平均25%のサイズにすぎません。
この関数を100秒または1000秒間呼び出すとします。呼び出しごとに引数のオプションを変更していますが、既定のオプションを変更するだけで、最大で2倍になります。
これでデフォルトオプションとその引数の引数オプションを渡すことができましたが、生成される関数のサイズが非常に大きいオブジェクトをたくさん作成して渡す必要がありました。これは記憶上の問題です。
私はこのスクリプトでメモリの問題を抱えていません。関数が生成されていることを覚えておいてください。そのサイズと頻度のデータを1つではなく複数の関数に渡すという問題に直面しています。関数の名前が自動的に私がやったように、名前での機能にアクセスするのは難しいだろうことを意味生成され、機能がそのIを意味し、他の生成された関数の内部で生成することができますので
var generated_function = function(arg1, arg2, options_arg){
...
generated_function.default ... //do something with it
...
}
generated_function.default = {}
:このようにそれを行いますスコープの問題に対処する必要があります。だから、
、基本的に私は何を探していますがの線に沿って何かである:だから私は、この生成されたシナリオでは、このようにそれを使用することができます
var generated_function = function(arg1, arg2, options_arg){
...
containing_function.default ... //do something with it
...
}
generated_function.default = {}
:
(window[ somerandomlygeneratedstring ] = function(arg1, arg2, options_arg){
...
containing_function.default ... //do something with it
...
(someobjectthatcannotbetracked[ somerandomlygeneratedstring ] = function(arg1, arg2, options_arg){
...
containing_function.default ...
...
}).default = { ... }
}).default = { ... }
* strict.cでは* arguments.callee *は使用できません。関数式に名前を付けて使用する方がはるかに優れています。あるいは、単に関数宣言を使用してください。 – RobG