Простите, вероятно, неправильное применение терминологии в этом вопросе (кстати, пожалуйста, исправьте меня, где не так).
Допустим, у нас есть пользовательский объект, который мы хотим определить.Некоторые методы этого объекта имеют смысл быть специфичными для экземпляра.И у нас также есть некоторые методы, которые действительно не зависят от экземпляра, что-то вроде публичного статического метода в языке, таком как C # или Java.
Какова стандартная практика для создания этих функциональных определений?В настоящее время я делаю что-то вроде этого:
var User = function(name){
this.Name = name;
User.instances.push(this);
};
User.instances = [];
User.doSomething = function(){
// do something interesting with the set of user instances
};
var me = new User('me');
var you = new User('you');
User.instances; // => [me, you]
Обратите внимание, как «статические» методы определяются в совершенно другом разделе, чем методы prototype / instance.Они просто не чувствуют себя связанными, глядя на код.В моем идеальном мире я мог бы определять все вместе (возможно, внутри User = function () {}?), Чтобы сделать код немного чище и более связанным.Я понимаю, что одна из способностей JS в том, что вы можете делать вещи отдельно и изменять на лету.Просто любопытно, что такое стандартная практика для чего-то подобного.
Иногда я просто вкладываю «статические» определения в некоторые скобки - даже если скобки на самом деле синтаксически не имеют смысла:Есть ли стандартная практика, о которой я не знаю?