これをより良い形に書き直すことはできますか?
function F() { return F.f(); } //wrapping :(
F.f = function() { /* code1 */ }
F.g = function() { /* code2 */ }
F.f = some_other_function
F.g() //this still works :D
F のインスタンスを作成するつもりはありません。一種の名前空間として使用するだけです。
私は次のことを試みましたが、Fg は保持されません (理由は理解できますが、Fg のようなバインディングではなく、F のコードと動作を変更できるようにするための適切な回避策が必要です):
function F() { /* code1 */ } //no wrapping :D, no need for F.f
F.g = function() { /* code2 */ }
F = some_other_function
F.g() //this points to nowhere now :(
編集: のラッパーとして Ff をもう使用する必要はありませんcode1
。
EDIT2: コードの最初の部分は有効な JS であり、私が望む動作をしています。問題は、私が Ff をまったく使用しなければならないことが気に入らないことです。2番目のコードのようにやりたいのですが、それでもFgが機能しています。実行時のある時点で、他のすべてをそのままにしておき
たいと思います。code1