Встала необходимость освоить JS на хорошем уровне. Возник вопрос.
В чем ключевое отличие между способами создания объектов и их членов/методов?
Также почему я часто вижу какие-то велосипеды для эмуляции приватных свойств, когда они и так есть "из коробки" ?
Вот пример:
// Как начал писать я
function foo(init_params) {
var self = this; // Еще один вопрос: это антипаттерн?
var private_member; // Я вижу приватные свойства так
var init = function(self) {
// конструктор
}
// Публичные методы
self.someMethod = function(params) {
// Метод
}
// --- //
init(self); // вызов конструктора
}
var bar = new foo(params);
bar.someMethod(...);
В чем ужас подобного подхода? Везде, где я смотрю и читаю, я вижу такое:
function foo() {
var privateMember;
this.publicMember = false;
}
foo.prototype.method = function(a) {
// метод
};
var bar = new foo();
b.method(...);
Почему так? Имхо, читабельность ниже.