Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中:如何向现有函数添加参数?_Javascript_Function_Parameters - Fatal编程技术网

在JavaScript中:如何向现有函数添加参数?

在JavaScript中:如何向现有函数添加参数?,javascript,function,parameters,Javascript,Function,Parameters,这里是Javascript新手。关于这个问题有很多文章,但我找不到答案(所以我想做的可能是糟糕的形式): 我可以向现有函数添加属性,但我想知道是否可以向函数添加新参数(而不只是覆盖函数)。 以现有函数为例(我碰巧将此函数用作构造函数): 我想添加一个“job”属性。我会写 Employee.job = job; 但Employee只有一个参数(“名称”)。我想给Employee函数一个附加参数:“job” 因此,预期的最终结果如下所示: function Employee(name, job)

这里是Javascript新手。关于这个问题有很多文章,但我找不到答案(所以我想做的可能是糟糕的形式):

我可以向现有函数添加属性,但我想知道是否可以向函数添加新参数(而不只是覆盖函数)。

以现有函数为例(我碰巧将此函数用作构造函数):

我想添加一个“job”属性。我会写

Employee.job = job;
但Employee只有一个参数(“名称”)。我想给Employee函数一个附加参数:“job”

因此,预期的最终结果如下所示:

function Employee(name, job) {
    this.name = name;
    this.job = job;
}

有什么方法可以做到这一点吗?

是的,您可以按照问题中的描述来做


只要一个变化。直接向构造函数添加变量,如下所示
Employee.job=job将使其成为静态。而是将此变量添加到其对象中。请查看以下代码段


JavaScript对象构造函数

//Person对象的构造函数 功能人(第一、最后、年龄、眼睛){ this.firstName=first; this.lastName=last; 这个。年龄=年龄; this.eyeColor=眼睛; } //创建2个人对象 var myFather=新人(“约翰”、“多伊”、50、“蓝色”); var myMother=新人(“萨利”,“拉力赛”,48,“绿色”); //将国籍添加到第一个对象 我的父亲国籍=“英语”; //显示国籍 document.getElementById(“demo”).innerHTML= “我父亲是”+我父亲国籍;
是的,您可以按照问题中的描述进行操作


只要一个变化。直接向构造函数添加变量,如下所示
Employee.job=job将使其成为静态。而是将此变量添加到其对象中。请查看以下代码段


JavaScript对象构造函数

//Person对象的构造函数 功能人(第一、最后、年龄、眼睛){ this.firstName=first; this.lastName=last; 这个。年龄=年龄; this.eyeColor=眼睛; } //创建2个人对象 var myFather=新人(“约翰”、“多伊”、50、“蓝色”); var myMother=新人(“萨利”,“拉力赛”,48,“绿色”); //将国籍添加到第一个对象 我的父亲国籍=“英语”; //显示国籍 document.getElementById(“demo”).innerHTML= “我父亲是”+我父亲国籍;
您可以通过在函数顶部添加包装来覆盖该函数。希望这有帮助

function Employee(name) {
  this.name = name;
}

function createWrapper(functionToWrap){

 return function EmployeeWrapper(name,job){
   let employeeInstance = new functionToWrap(name);
   employeeInstance.job = job;
   return employeeInstance;
  }

}

Employee = createWrapper(Employee);
employeeInstance = new Employee('name','job');

您可以通过在函数顶部添加包装来覆盖该函数。希望这有帮助

function Employee(name) {
  this.name = name;
}

function createWrapper(functionToWrap){

 return function EmployeeWrapper(name,job){
   let employeeInstance = new functionToWrap(name);
   employeeInstance.job = job;
   return employeeInstance;
  }

}

Employee = createWrapper(Employee);
employeeInstance = new Employee('name','job');

Employee.job=job向函数添加静态属性。使用
new Employee()
创建的
Employee
实例将无法访问它。你为什么不想改变这个功能?你唯一能做的就是原型继承和创建一个新的函数,你在运行时使用uodate参数吗?在这种情况下,是的(我在Chrome调试控制台中进行实验),但是我想找到一个在任何情况下都能工作的解决方案。@adiga我想给构造函数添加一个参数,这样
job
就不是静态的。目标是:当我执行
let employee1=new Employee(name,job)
时,我可以将我想要的任何姓名和职务传递到新对象中。最好的方法是将
Employee
函数重写为所需的代码。为什么要动态执行此操作?
Employee.job=job向函数添加静态属性。使用
new Employee()
创建的
Employee
实例将无法访问它。你为什么不想改变这个功能?你唯一能做的就是原型继承和创建一个新的函数,你在运行时使用uodate参数吗?在这种情况下,是的(我在Chrome调试控制台中进行实验),但是我想找到一个在任何情况下都能工作的解决方案。@adiga我想给构造函数添加一个参数,这样
job
就不是静态的。目标是:当我执行
let employee1=new Employee(name,job)
时,我可以将我想要的任何姓名和职务传递到新对象中。最好的方法是将
Employee
函数重写为所需的代码。为什么要动态执行此操作?@flightPlan解决了您的问题吗?如果是,请接受答案。如果你还需要什么,请告诉我。嗨@Deepak谢谢你的回答,但我认为这并不能解决问题。使用您的示例:我想向“Person对象的构造函数”本身添加一个参数(在初始化之后)。因此,每当我使用
newperson
时,新人都会接受“国籍”这一论点。构造函数的第一行是
function Person(first,last,age,eye,national)
。因此,您希望更改构造函数定义,并在其后使用更新的构造,对吗?正确。理想情况下不覆盖函数。@flightPlan解决了您的问题吗?如果是,请接受答案。如果你还需要什么,请告诉我。嗨@Deepak谢谢你的回答,但我认为这并不能解决问题。使用您的示例:我想向“Person对象的构造函数”本身添加一个参数(在初始化之后)。因此,每当我使用
newperson
时,新人都会接受“国籍”这一论点。构造函数的第一行是
function Person(first、last、age、eye、national)
。因此,您希望更改构造函数定义,并在其后使用更新的构造