На самом деле, статические методы не добавляются в prototype
, потому что они принадлежат самому классу, а не его экземплярам.
Но если ты хочешь имитировать статический метод в prototype
, можно использовать функцию-конструктор и добавить метод вручную.
В классе статические методы объявляются с помощью static
. Они не находятся в prototype
, а принадлежат самому классу.
class User {
static sayHello() {
return "Привет!";
}
}
console.log(User.sayHello()); // ✅ "Привет!"
console.log(User.prototype.sayHello); // ❌ undefined (нет в prototype)
Если нужно, чтобы каждый объект имел доступ к "статическому" методу через
prototype
, можно сделать такfunction User(name) {
this.name = name;
}
// Добавляем метод в prototype
User.prototype.sayHello = function () {
return "Привет!";
};
const user1 = new User("Иван");
console.log(user1.sayHello()); // ✅ "Привет!"
Если хочется добавить метод на сам класс, а не в
prototype
, можно сделать такfunction User(name) {
this.name = name;
}
// Добавляем метод прямо в функцию-конструктор
User.sayHello = function () {
return "Привет!";
};
console.log(User.sayHello()); // ✅ "Привет!"
Ставь 👍 и забирай 📚 Базу знаний