为 JS 函数设置变量

Set variable for a JS function

本文关键字:变量 设置 函数 JS      更新时间:2023-09-26

所以基本上我有一个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是新设置,但该功能仍然使用"旧"设置。知道我会怎么做吗?

谢谢!

我不知道

为什么myFunc甚至是一个函数。它应该是一个对象:

var myThing = {
  settings: {/*my default settings */};  
}

然后,您可以调用myThing.settings以获取默认设置。

您可以使用

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' });

有一个参数,您可以在其中传入设置,如果未提供参数,请恢复为默认设置:

var myFunc = function (newSettings) {
  var settings = newSettings || {/*my default settings */};  
  //do something
  return {settings:settings};
}