JavaScript свойство Function.prototype

Определение и применение

Свойство Function.prototype хранит общий прототип обычных функций — объект, от которого они наследуют call(), apply(), bind() и toString(). Само свойство конструктора Function нельзя переназначить, но объект, на который оно ссылается, не заморожен. У функций-генераторов и асинхронных функций есть промежуточные прототипы, чья цепочка также ведёт к Function.prototype.

Атрибуты свойства: writable разрешает присваивание, enumerable определяет участие в перечислении свойств, configurable разрешает удаление и переопределение.

prototype: справочные сведения
Атрибут Значение
writable false
enumerable false
configurable false

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

JavaScript синтаксис:

JavaScript
Function.prototype

Спецификация

ECMAScript — Function.prototype.

Свойство prototype конкретной функции

func.prototype — другой объект: при вызове обычного конструктора через new он становится прототипом созданного экземпляра. Свойство обычной функции-конструктора имеет атрибуты writable: true, enumerable: false, configurable: false. У класса writable равно false.

Примеры, попробуйте сами

Два разных прототипа функции

Измените поле экземпляра и сравните общий прототип функции с прототипом созданного объекта.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
function Person(name) {
    this.name = name
}
const person = new Person('Анна')
console.log(Object.getPrototypeOf(Person) === Function.prototype) // true
console.log(Object.getPrototypeOf(person) === Person.prototype) // true
console.log(person.name)
console.log(Object.hasOwn(() => {}, 'prototype')) // false
console.log(Object.hasOwn(function* () {}, 'prototype')) // true