Trebalo mi je "samo" mesec dana da ukapiram .bind
Dodatna pitanja:
1.
document.onclick = this.mouse.bind(this); // lepo radi
Ali ako hocu da koristim "modernije" event handlere onda moram da koristim:
addEventHandler(nav, 'click', this.onMouseClick.bind(this));
addEventHandler(nav, 'click', bind(this, this.onMouseClick));
Code:
// var a = bind(obj, obj.method);
if (typeof (bind) == 'undefined'){
function bind (obj, method) {return function () { return method.apply(obj, arguments); } // function is return value!!!
}
} // --------------------------end if ! bind-------------------------
function addEventHandler(node, etype, f){
if (node.addEventListener) {node.addEventListener(etype, f, false);} // w3c; false buble up
else if (node.attachEvent) {node.attachEvent('on'+etype, f);} // MS only bubble up
else {node['on'+etype] = f;} // All
} // -------------------- end addEventHandler------------------
Oba bindovanja rade jer bind kao rezultat vraca
funkciju, koja onda radi call/apply itd... To bi trebalo da sam shvatio.
Pitanje je da li mogu da vezem <html elem this> nekako s tim bindovanjima. Za sada elem dobijam preko click:
Code:
var elem = e.target ? e.target : e.srcElement; // html elem you clicked on
while (elem.nodeType !== 1) {elem = elem.parentNode;} // if clicked on txt node
Ali bi bilo lepo kad bih imao this = object i elem = html.this;
Predpostavljam da negde treba pustiti html.this kao parametar.
2. Koliko ja razumem elem.onclick = myf; je standardna JavaScript dodela funkcija na objekat. U ovom slucaju DOM objekat elem. To ne bi trebalo nikad da se izbaci iz jezika. Jedini nacin da to nestane je da se izmeni DOM. Tj da DOM node prestane da bude JS object. Da li sam u pravu?
3. addEventHandler sluzi samo za dodavanje vise event funkcija. Ostalo je isto kao pod 2. Ili nije?
Takodje, koji se unutrasnji mehanizam koristi za vise f na jednom onclick?
4. Dodam par funkcija na onclick sa addEventHandler(document, 'click',myf1,2,3) i onda kasnije upotrebim document.onclick = myf5;
Da li sam tako obrisao sve prethodne myf1,2,3 i postavio samo myf5 na onclick?
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.