Вы говорите о методах класса.
function Foo() {
this.bar = 3
}
Foo.baz = function() {
console.log('hi');
}
или в ES 2015
class Foo {
static baz () {
console.log('hi');
}
}
Ответ на комментарии
Вы можете определить статический метод в функции конструктора, поскольку функция конструктора обязательно находится в области видимости:
function Foo() {
Foo.method = function () {
// do stuff
}
}
Однако у этого подхода есть пара проблем:
Foo.method('stringy string'); // TypeError: cannot read property 'method' of undefined
Поскольку статический метод определен в конструкторе, его не будет, пока функция конструктора не будет запущена хотя бы один раз:
const foo = new Foo();
Foo.method('stringy string'); // now we're good
, что приводит к другой проблеме, теперь мы расточительно переназначаем этот метод при каждом запуске конструктора. Этого можно избежать с помощью условной проверки:
function Foo() {
if (!Foo.method) Foo.method = function....
}
Но это много странных вещей, просто чтобы избежать определения метода класса после конструктора, и он по-прежнему не решает первую проблему.