所以基本上我有一个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
是新设置,但该功能仍然使用“旧”设置。我知道怎么回事?
谢谢!
答案 0 :(得分:1)
我不知道为什么myFunc
甚至是一个功能。它应该是一个对象:
var myThing = {
settings: {/*my default settings */};
}
然后,您可以致电myThing.settings
以获取默认设置。
答案 1 :(得分:0)
有一个参数可以传递设置,如果没有提供参数,则恢复为默认设置:
var myFunc = function (newSettings) {
var settings = newSettings || {/*my default settings */};
//do something
return {settings:settings};
}
答案 2 :(得分: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' });