В вашем текущем коде вы не объявляете myFunction3
, поэтому функция будет находиться в глобальной области видимости, и каждый новый экземпляр Constructor
будет отменять предыдущий myFunction3
:
const instance = new Constructor();
myFunction3 = () => alert("whoops");
instance.myFunction2(); // "whoops"
Поэтому существует только один myFunction3
за один раз, что экономит память, однако тогда нет смысла переопределять ее в конструкторе (никогда не имеет смысла не объявлять переменные).
Предполагается, что вы объявили это правильно с помощью:
function myFunction3() {
let b = 0;
return b;
};
тогда вы вообще не будете сохранять память, поскольку ссылка на myFunction3
сохраняется при закрытии других функций, которые вы назначаете для this
, поэтому myFunction3
будет оставаться в памяти столько, сколько любой экземпляр, на который ссылается this
, делает. Если вы делаете
this.myFunction3 = function() { /*...*/ };
он также будет оставаться в памяти до тех пор, пока существует this
, поэтому они фактически равны с точки зрения памяти. Однако myFunction3
является несколько «приватным», поскольку к нему нельзя получить доступ через this
.