Momentálne pracujem na projekte a mám obmedzené znalosti JavaScriptu. Používam prototypy (jeden na ich vyskúšanie a dva, pretože sa mi v tom čase zdal skvelý nápad).
Mám súbor JS, ktorý je plný prototypov a volá ich takto:
$(document).ready(function() {
var dash = new Dash();
});
var Dash = function() {
var _ = this;
_.defaults = {
pages: {},
page_name: {},
page_order: []
};
_.init();
};
Dash.prototype.init = function() {
var _ = this;
_.getPages();
_.onClickNewPage();
_.onClickEditPage();
};
Dash.prototype.getPages = function() {
var _ = this;
// calls some ajax
};
Skoro všetky metódy prototypu iba upravujú stránku v závislosti od toho, čo chce používateľ vidieť.
Je to správny spôsob použitia prototypov? Ak nie, existuje lepší spôsob? Čo by som mohol vylepšiť a aké sú pamäťové dôsledky volania var _ = this;
v každej metóde prístup k iným metódam?
Ospravedlňujeme sa, ak je to zjavná otázka, ale na Googli nájdem iba príklady mačky vs. psa a nie sú príliš užitočné.
Naozaj chcem, aby bol tento kódex čo najefektívnejší pri používaní najlepších postupov.
Upozorňujeme tiež: nič nezdedím, iba veľa využívam rôzne metódy.
odpovede:
0 pre odpoveď č. 1Skoro všetky metódy prototypu iba upravujú stránku v závislosti od toho, čo chce používateľ vidieť.
Ide o účel kódu, ktorý nemá alebo nemá nič spoločné s prototypmi.
Nič nezdedím, iba veľa pristupujem k rôznym metódam. Je toto správny spôsob použitia prototypov?
Nie. Ak nemáte dedičstvo ani viac inštancií (a vytvoríte iba jednu new Dash
na svojej stránke), potom je použitie konštruktora triedy s prototypovými metódami príliš komplikované. Nie je to potrebné.
Ak nie, existuje lepší spôsob?
Stačí použiť nejaký vzor modulu, kde všetky tieto funkcie umiestnite ako deklarácie do spoločného rozsahu, alebo na objektový literál, ak sa chcete zamerať na OOP a rozšíriteľnosť.
Ak chcete urobiť modul opakovane použiteľným, zabaľte ho do funkcie, ktorá vráti objekt.
Aké sú pamäťové dôsledky volania
var _ = this;
v každej metóde prístup k iným metódam?
Lokálne premenné nemajú žiadny vplyv na pamäť, ale vaše _
má problém s čitateľnosťou. Stačí ísť so štandardom this.
spôsob volania metód.