Я думаю, что это действительно зависит от того, создается ли копия ваших методов в памяти для каждого экземпляра объекта. Например:
var MyObj = function(x) {
this.doStuff = function() {
//Do some stuff
};
this.someProperty = x;
};
//myInstance will have its own copy of the doStuff method
var myInstance = new MyObj(10);
В приведенном выше коде для каждого экземпляра MyObj
требуется копия doStuff
в памяти. Однако, если метод был объявлен на prototype
, это другая история:
var MyObj = function(x) {
this.someProperty = x;
};
MyObj.prototype.doStuff = function() {
//Do some stuff
};
//myInstance can still access doStuff, but all instances share one copy
var myInstance = new MyObj(10);
На этот раз каждый экземпляр MyObj
имеет свое собственное свойство someProperty
, но когда вы вызываете метод doStuff
, он не обнаруживается в самом экземпляре, поэтому вместо него просматривается prototype
, где он найден и выполнен.
Однако, если, как вы говорите, существуют методы, которые вообще не вызываются, я не вижу никакой причины хранить их независимо от того, где они объявлены. Лично я бы от них избавился (если только они не будут обеспечивать ценность в будущем). Но я не знаю ваш код, так что вам придется принять это решение.