Can a method in javascript be final? How to avoid it to be overriden by a subclass?
In the traditional sense, no, you can't have private/protected methods or prevent them from being overridden.
What you can do, however, is encapsulate methods in a scope and then simply not expose them:
function foo(){
function bar(){
// private function
}
this.doSomething = function(){
bar();
}
}
That's about as close as you can get. I wrote an article on this a while ago: http://www.htmlgoodies.com/primers/jsp/article.php/3600451/Javascript-Basics-Part-8.htm
You can also use __defineGetter__ and __defineSetter__ to prevent access, but those aren't 100% cross-browser.
var x = {};
x.__defineGetter__('foo', function(){ return 10; });
x.__defineSetter__('foo', function(){});
x.foo = 'bar';
x.foo; // 10
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With