В JavaScript: Как добавить параметр к существующей функции? - PullRequest
0 голосов
/ 26 мая 2020

Javascript здесь новичок. На эту тему много написано, но я не могу найти ответ (так что то, что я пытаюсь сделать, вероятно, плохой тон):

Я могу добавить свойство к существующей функции, но Я хотел бы знать, могу ли я добавить новый параметр к функции (без перезаписи функции).

Возьмите существующую функцию (я использую ее как конструктор function):

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

Я бы хотел добавить свойство «работа». Я мог бы написать

Employee.job = job;

Но у сотрудника есть только один параметр («имя»). Я хочу дать функции Employee дополнительный параметр: «job».

Итак, желаемый конечный результат будет выглядеть так:

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

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 26 мая 2020

вы можете переопределить функцию, добавив поверх нее оболочку. Надеюсь, это поможет.

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');
1 голос
/ 26 мая 2020

Да, вы можете сделать это так, как вы описали в вопросе.

Всего одно изменение. Добавление переменной в конструктор напрямую, как это Employee.job = job;, сделает его stati c. Вместо этого добавьте эту переменную к своему объекту. Посмотрите следующий фрагмент ...

<!DOCTYPE HTML>
<html>
    <body>

    <h2>JavaScript Object Constructors</h2>

    <p id="demo"></p>

    <script>
        // Constructor function for Person objects
        function Person(first, last, age, eye) {
            this.firstName = first;
            this.lastName = last;
            this.age = age;
            this.eyeColor = eye;
        }

        // Create 2 Person objects 
        var myFather = new Person("John", "Doe", 50, "blue");
        var myMother = new Person("Sally", "Rally", 48, "green");

        // Add nationality to first object
        myFather.nationality = "English";

        // Display nationality 
        document.getElementById("demo").innerHTML =
        "My father is " + myFather.nationality; 
    </script>

    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...