0

基本的に、次のようなJS関数があります。

var myFunc = function () {
  var settings = {/*my default settings */};  
  function otherFunc(arg){
    /*do stuff*/
  }
  otherFunc(settings);
  return {settings:settings};
}()

今、私が呼び出すことができるコンソールを使用して、myFunc.settingsこれらを完全に出力しますが、ユーザーに次のようなデフォルト設定を上書きしてもらいたいです:

<script src="myfunc.js"></script>
<script>myFunc.settings = {/*overwrite some settings*/};</script>

現在myFunc.settingsは新しい設定ですが、関数はまだ「古い」設定を使用しています。これについてどうすればいいのか手がかりはありますか?

ありがとう!

4

3 に答える 3

0

次のようにして、それをプロパティにすることができます(ローカルではありません)this

function MyFunc () {
  this.settings = {/*my default settings */};  
};
MyFunc.settings = { foo: 'bar' };
console.log(MyFunc.settings); // Object {foo: 'bar'}

それはあなたが本当に望んでいる以上のものを公開するかもしれないので、あなたが作成しているものを構築しているときにオプションを渡すことを許可することを検討するかもしれません:

function MyFunc (options) {
  var defaults = { foo: 'baz' };
  var settings = /* merge defaults and options */;

  /* You probably don't even need to expose settings now. */
};
var instance = new MyFunc({ foo: 'bar' });
于 2013-09-08T22:45:38.253 に答える