Хотя у Alnitak есть хороший прямой ответ на ваш вопрос, в зависимости от того, чего вы пытаетесь достичь, вы можете предотвратить «переписывание» метода, сделав его «закрытой» переменной через замыкание.Он не защищает «публичные» функции, но может скрывать приватные функции и предотвращать их изменение.
var myObj = (function(){
var data = {count: 0};
var privateFunction1 = function(){
data.count++;
};
var privateFunction2 = function(){
// do something else
};
var result = {
callPrivateFunction: function(){
privateFunction();
privateFunction2();
}
};
return result;
})();
Конечно, любая публичная функция, которая вызывает приватную функцию, может быть перезаписана, поэтому в зависимости отто, что вы пытаетесь достичь, может просто вызвать проблему.Тем не менее, этот подход является хорошим способом для выполнения некоторой инкапсуляции и не предоставляет в API объекта больше, чем вы хотите.