JSFiddle - React, Tailwind, and code Playground
daniel.steigerwald.cz
JavaScript
// http://daniel.steigerwald.cz (MIT Licensed)
// jednoduchá funkce, vrací svůj kontext
var getContext = function() {
return this;
}
// true, protože 'this' je globální objekt 'window'
alert(getContext() == window);
// vezmeme tu samou funkci, a přiřadíme ji k objektu 'myObj'
var myObj = {
getContext: getContext,
// přepíšeme 'toString'
toString: function() {
return 'kontext je myObj';
}
};
alert(myObj.getContext());
// tečková notace říká, odkud si funkce má kontext vzít
// vytvoříme jiný objekt
var anotherObj = {
toString: function() {
return 'kontext je anotherObj';
}
};
// pomocí klíčového slova 'call' můžeme kontext funkci vnutit, navzdory tečkové notaci
var result = myObj.getContext.call(anotherObj);
alert(result);
// pozor, předáváme-li funkci nějaké jiné funkci, kontext se nepřenáší!
var alertContext = function(fn) {
var result = fn();
// true, protože navzdory tečkové notaci, předána byla pouze samotná funkce
alert(result != myObj);
// true, protože result je window
alert(result == window);
}
// všimněte si chybějících závorek, funkce se nezavolá, ale předá jako argument
alertContext(myObj.getContext);