Maintainable JavaScript: Don’t modify objects you don’t own
Ne változtassuk meg azon objektumok viselkedését, amiket nem mi írtunk
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
Nem meggyőző példa
document
módosításához. A probléma az, hogy a Prototype API-ját időközben önkényesen (azaz lefele nem kompatibilisen) módosították, és eltűnt a fenti funkcionalitás.A natív implementáció nyilván gyorsabb, mint a (példa idején használt) JS. Ez viszont nem ok arra, hogy egy egyszerű wrapper továbbra is ott legyen, ami továbbra is Array-t ad vissza és biztosítja a kompatibilitást.
A verziók közi inkompatibilitás egyértelmű védjegye a rossz minőségű szoftvernek, és itt csupán erről van szó.
A cikkben másról van szó…
És akkor ebből következik az, hogy a beépített objektumok prototype-jának módosítésa idővel, mi után látják a specifikációk kidolgozói, hogy mit igényelnek az emberek, natívan beépítik a specifikációba, emiatt a bővített működések a saját megoldásokban nem fognak működni, mivel a JavaScript-ben az objektumok saját metódusait nem tudod override-olni — és nem is sok értelme lenne.
Az utolsó mondatoddal pedig szintén nem tudok egyetérteni — ha jól értelmezem azt, de lehet nem, ez majd kiderül a válaszodból: a PHP nyelvnek kifejezetten jót tenne, ha a most fejlesztés alatt álló 6-os verzió nem lenne visszafele kompatibilis az 5-ös verzióval és kijavítanák a nyelv szintaktikai betegségeit. Hiszen miért korlátozzon be egy — akár évtizedekkel korábban — "hibásan" elgondolt API a későbbi fejlesztések során, pláne ha egyértelmű major és nem minor verzió váltás történik?
Egyáltalán nem értem, hogy
Nem programoztam prototype-ra, úgyhogy a következők lehet, hogy hibásak. Amennyire látom a módszer az, hogy egy prototype-féle metódussal kapsz vissza egy elemet (mondjuk a $ függvénnyel), ami fel lesz díszítve a megfelelő funkcionalitással (így nem lesz gond tetszőleges DOM elemek kezelése, nem csak a document-é).
Ennek nincs akadálya:
Ezt nem tudom hogy érted.
Ez megérne egy új topicot. Témaindítónak: JAVA :)
Remélem válasz lesz
Persze, csak akkor nem az elemnek (mert ugyebár ezeket a metódusokat bármely HTML elemen használhatod), hanem csak a window-nak tudod meghívni ezt a tulajdonságát, így nem az elvárt API-t kapjuk, csak abban az esetben, ha eredetileg is
window.getElementsByClassName()
-et akartunk hívni.Ezt nem tudom hogy érted.
Vegyük alapul az
alert()
metódust, ami ugye awindow
objektumnak egy saját metódusa. Ilyet nem tehetsz meg JavaScriptben:Sajnos nem tartom magam annyira hozzáértőnek, hogy ennek kapcsán kielégítő topicnyitó üzenetet írjak… Te igen? Mert hozzászólnom valószínű könnyebb lenne :)
És írjunk web-es petíciót, hogy a PHP7 az már ne legyen visszafele kompatibilis!
?????
Akkor légyszíves illeszd be ezt a kódot a firebug javascript konzoljába is futtasd le.
Üdv:
Gábor
feature sniffing?
Helyesen if
Igen, köszi,
DOM API
Sokan [who] azért használnak keretrendszert, mert a DOM-on keresztüli manipulálást túl fapadosnak/időtrablónak tartják. Nekik nem hiszem, hogy nagy törést okoz, hogy egy DOM feature-t nem használhatnak ki, ha a választott API-juk erre már bejáratott megoldást kínál.
Nagy törést okoz, mert
Jogos