Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
Javascript a oblast působnosti proměnných - díl první

Vít Šesták aura:72
7. 8. 2009 10:59

Hack s anonymkou

Myslím, že v tomto kontextu můžeme zmínit tento hack: (function(){
var foo;
… })(); Funguje to obdobně jako toto v Javě, C, C++, …: {
type foo;
… };

Daniel Steigerwald
Daniel Steigerwald (neregistrovaný) ---.67.broadband2.iol.cz
7. 8. 2009 13:31

Re: Hack s anonymkou

Volání anonymní funkce není žádný hack :)

Vít Šesták aura:72
7. 8. 2009 16:01

Re: Hack s anonymkou

Prvně je potřeba definovat „hack“ a pak můžeme diskutovat o tom, zda to je nebo není hack. Pro mě je to nezamýšlené použití, byť může být v souladu s normou. Každopádně toto využití považuji za užitečné.

Daniel Steigerwald
Daniel Steigerwald (neregistrovaný) ---.67.broadband2.iol.cz
7. 8. 2009 20:53

Re: Hack s anonymkou

Hack je něco, co něco (jiného) „znásilňuje“ :) Tvůj příklad je velmi užitečný a bylo dobré ho zmínit, výhrady sem měl pouze k použití pojmu „hack“.

Pro upřesnění, za hack považuji třeba resetování dontEnum attributu na nativních funkcích, například:

var push = Array.prototype.push; delete Array.prototype.push Array.prototype.push = push;

K čemu to je dobré? for in na Array.prototype náhle najde i push funkci, což se hodí při vytváření array-like objektů. Více, až zveřejním svůj framework ,–)

Vít Šesták aura:72
7. 8. 2009 21:02

Re: Hack s anonymkou

Tento konkrétní hack nepovažuju za šťastné řešení – použití kódu, který vyžaduje hack spolu s kódem, který se spoléhá na standardní chování, je prakticky nemožné. Lepší by bylo napsat nástroj, který umožní procházet i tyto položky, např pomocí for(i in MyTool.Array)… . Název MyTool jsem použil, protože se mi nechtělo hledat nic lepšího. Důležité je, že standardní chování je zachováno. Jinak já opravdu neznám žádnou definici slova hack. Pokud někdo má, rád ji uvítám.

Martin Malý aura:93
7. 8. 2009 21:05

Re: Hack s anonymkou

Ad hack – definice z Wikipedie nestačí? „Hack has several related meanings in the technology and computer science fields. It may refer to a clever or quick fix to a computer program problem, or to what may be perceived to be a clumsy or inelegant (but usually relatively quick) solution to a problem. The term is also used to refer to a modification of a program or device to give the user access to features that were otherwise unavailable, such as DIY circuit bending.“

Daniel Steigerwald
Daniel Steigerwald (neregistrovaný) ---.67.broadband2.iol.cz
8. 8. 2009 0:11

Re: Hack s anonymkou

No, jen dodám, že Sheer framework umožňuje modifikaci prototype všech nativních metod, přesto nijak neovlivňuje prostředí ve kterém běží. Tedy, všechny finesy PrototypeJS a Mootools frameworků, jenž modifikují prototype, avšak s žádným negativním dopadem na prostředí ve kterém běží. Prostě znám způsob, jak ohnout js jakkoliv, aniž by se bylo třeba obávat dopadů na ostatní kód. Tohle je hack. Volání anononymní metody hack není.

Vít Šesták aura:72
8. 8. 2009 8:40

Re: Hack s anonymkou

Hmm, tak to mě napadá jen: (function(Array){
… })(AFramerowk­.getModifiedTy­pe(Array, {
push: Array.prototy­pe.push }));

Možná existuje ještě něco jiného (nemyslím obdoby tohoto řešení na stejném principu), ale to neznám.

V každém případě změna lokálního prostředí nebude škodlivá, to je pak něco jiného.

Zasílat nově přidané příspěvky e-mailem