Если вы ссылаетесь на присвоение функции локальной переменной и использование этой функции в другом публичном методе, то да, это будет некая форма инкапсуляции данных . Кроме того, я бы сказал, что для этого нет особого названия.
var bar
является локальной переменной для функции, а this.bar
является свойством нового объекта. Переменная и свойство имеют одно и то же имя, но они не связаны между собой.
Это полезно только в том случае, если вы хотите сделать функцию в bar
общедоступной и обеспечить правильную работу другой функции, если общедоступная bar
перезаписана.
Так что это какая-то форма защиты других функций, но это не специальный шаблон, позволяющий внешнюю перезапись.
Если бы единственная цель this.bar
была перезаписана, то вы бы достигли того же с помощью:
function foo() {
var bar = function () {
return "bar";
};
this.mybar = function () {
return bar();
}
}
var myFoo = new foo();
myFoo.bar = function() {
return "notbar";
};
myFoo.bar(); // returns 'notbar'
myFoo.mybar(); // returns "bar"
Конечно, если вы вызовете myFoo.bar()
до того, как назначите ей функцию, вы получите ошибку.