Подтвердить что ты не робот

Javascript добавляет свойство к функции

Скажем, у нас есть функция.

function Rabbit(){
  console.log("shiv");
}

Теперь, не создавая объект этой функции, я могу назначить свойство этого объекта

Rabbit.bark = function(line) {
 console.log("name is", line);
};

Что это значит. сделайте это, добавьте переменную кору для работы. или это добавляет свойство к объекту Rabbit, даже если я не создаю объект с помощью оператора new.

4b9b3361

Ответ 1

Функция в JavaScript - это просто объект, он называется Function.

И как и любые другие типы объектов, он имеет свой собственный конструктор (new Function(...)), методы (apply, bind, call...) и свойства (arguments, caller, name...). См. документ.

Возможно, вы знакомы с созданием такой функции:

function Rabbit() {
    console.log('shiv');
}

Затем вы должны знать, что вы также можете создать такую ​​функцию:

var Rabbit = new Function('console.log("shiv")');

Теперь вы можете догадаться. Если вы добавите новое свойство в объект Function, если вы не перезаписываете существующий, функция все еще работает нормально.

сделайте это, добавьте переменную кору в функцию

  • Нет, функция имеет собственное закрытие, единственный способ добавить переменную к функции - связать ее с объектом this, используя Rabbit.bind(object)

сделайте это, добавив свойство к объекту Rabbit

  • Ну, так как "объект кролика" - это просто объект, да.

Ответ 2

что это значит. сделайте это, добавьте переменную кору для работы. или делать это добавило свойство объекта Rabbit

сделайте это, добавьте переменную кору в функцию - Нет

или добавьте свойство к объекту кролика - Да

bark является свойством объекта типа Function

даже если я не создаю объект, используя новый оператор

Rabit уже является объектом (типа Function). Вы не создаете экземпляр этого объекта, просто добавляете к нему свойство.