Witam
Czytam sobie książkę JS: Mocne Strony, autor proponuje aby nie tworzyć nowych obiektów poprzez wywoływanie funkcji z operatorem new, oraz ze lepszym pomysłem jest napisanie funkcji która zwraca obiekt(stosując domkniecie). Dodatkowo na jakimś blogu wyczytałem że jednak lepiej jest tworzyć obiekt poprzez wywołanie funkcji z operatorem new, argumentował to takim przykładem:
var Obj = function () {
return { value: 'value' };
};
var obj1 = Obj();
var obj2 = new Obj();
obj1.constructor; // -> Object()
obj2.constructor; // -> Object()
obj1.constructor.toString(); // -> "function Object() { [native code] }"
obj2.constructor.toString(); // -> "function Object() { [native code] }"
Głownie chodzi to ze nie możemy się już dostać od funkcji która konstruowała obiekt. Wydaje mi się to logiczne ponieważ jej nie napisaliśmy.
Które rozwiązanie jest lepsze oraz dlaczego?
W tej chwili korzystam z czegoś takiego, i tutaj tłumaczenie autora książki nie ma zastosowania bo przecież bez problemu da się utworzyć zmienne prywatne(strona 45 drugi akapit).
var Car = function (name, speed) {
this.petName = name;
var maxSpeed = speed;
this.writePetName = function () { document.writeln(this.petName) }
function writeMaxSpeed() { document.writeln(maxSpeed) }
}
var c = new Car("BMW", 100);
c.writePetName();
document.writeln(c.petName)
c.writeMaxSpeed(); // blad, prywatne
document.writeln(c.maxSpeed); // blad, prywatne