Jak byste nejlépe popsal JavaScript? Pro běžného joea je JavaScript často označovaný jako JS, jak bychom to ve většině částí tohoto článku nazývali, skriptovací nebo programovací jazyk, který umožňuje interakci s klientem, jako jsou animace a obecná webová interaktivita. Ačkoli JS lze použít jako technologii na straně serveru, v případě NodeJS taková konverzace přesahuje rozsah tohoto článku. Otázka, kterou byste měli mít na mysli, by měla znít, jaké téma spadá do rozsahu tohoto článku? Pokud jste odpověděli this
, budete mít 100% správnou this
klíčové slovo V JavaScriptu se bude diskutovat za účelem zjednodušení jeho použití nebo aplikace.
Zatímco JS je ve vztahu lásky a nenávisti k obecné programátorské komunitě (zejména se začátečníky), vrhneme více světla na to, proč this
klíčové slovo je nevyhnutelné a je důležité ho znát.
Co je to?
V programovacím jazyce JavaScript this
odkazuje na objekt. Konflikt obvykle vychází z toho, ke kterému objektu se vztahuje, ale to zcela závisí na tom, jak je vyvolán nebo vyvolán. Než budeme pokračovat, obešli jsme slovo objekt a porozumění objektům v JS je zásadní pro správné pochopení this
.
Objekty v JS jsou nezávislé entity (forma) s vlastnostmi a typem. Pes může být například objekt se štěkotem, chůzí a běháním, přičemž jednou z jeho vlastností je také barva jeho srsti. Jednoduše řečeno, vlastnosti definují vlastnosti objektů.
Příklad:
Klikněte pravým tlačítkem myši na svůj prohlížeč, vyberte možnost Prozkoumat, poté kartu konzoly a zadejte následující kódy níže.
const myCar = {
make: ‘Honda’,
model: ‘Accord’,
year: 2006,
color: ‘Black’
};
Nemovitost můžete zavolat nebo se na ni odkázat zadáním níže uvedeného kódu:
myCar.color
vrací se
‘Black’
Poznámka: Toto je jen jeden způsob, jak deklarovat objekty v JavaScriptu, a pokud se nazývá vlastnost, která neexistuje, vrátí nedefinovaný.
Strávili jsme nějaký čas diskusí o non this
nápad, ale stálo to za to, takže se vraťme k this
a obecný koncept za tím.
Obecně this
odkazuje na objekt volající funkci, což znamená this
je definován objektem, který provádí dotaz nebo volání, a nikoli funkcí.
Podle výše uvedených kroků zadejte this
ve vaší konzoli a získáte následující výstup odkazující na globální objekt systému Windows.
Window {window: Window, self: Window, document: document, name: '', location:
Location, …}
Toto lze rozšířit, abyste viděli další vlastnosti spojené s globálním objektem okna vašeho prohlížeče vlastnost window objektu Window ukazuje na samotný objekt Window. To znamená, že následující kódy po zadání v prostředí konzoly vrátí objekt okna.
window
window.window
window.window.window
Window {window: Window, self: Window, document: document, name: '', location:
Location, …}
Pokud bychom napsali this.location
, vrátí aktuální adresu URL a další vlastnosti s ní spojené, stejně jako window.location
Jak je ukázáno níže.
Location {ancestorOrigins: DOMStringList, href: 'https://esodora.com/', origin:
'https://esodora.com', protocol: 'https:', host: 'esodora.com', …}
Chcete-li si udělat jasnější obrázek, je třeba porozumět následujícím bodům a smířit se s nimi.
1. toto je vyhrazené klíčové slovo a nelze jej použít jako proměnnou: stejně jako ostatní programovací jazyky jsou pro jazyk a jeho vnitřní běh zachována vyhrazená klíčová slova, uživatelé je nemohou odkazovat pro ukládání jako proměnné a totéž lze říci o tomto klíčovém slově. Níže uvedený kód vyvolá chybu syntaxe.
let this = 'you cannot use as variable'
Uncaught SyntaxError: Unexpected token 'this'
2. Když je toto použito v objektové metodě, odkazuje na objekt: níže uvedený kód jasně ilustruje název.
const myCar = {
brand: "Honda",
model: "accord",
year: 2006,
details : function() {
return this.brand + " " + this.model + " " + this.year;
}
};
myCar.details()
se vrací
'Honda accord 2006'
3. Když je toto použito samostatně, odkazuje na globální objekt, jak je znázorněno ve výše uvedeném příkladu: tato část nevyžaduje žádné další vysvětlení, protože již bylo uvedeno výše pro vrácení objektu globálního okna.
4. Při použití ve funkcii , to odkazuje na objekt globálního okna, stejně jako při použití jako samostatný objekt.
function validate(){
return this == window;
}
validate();
true
5. V přísném režimu , vrátí toto klíčové slovo nedefinováno, a to proto, že v přísném režimu globální objekt odkazuje spíše na nedefinovaný než na objekt okna.
"use strict"
function callThis(){
console.log(this);
}
undefined
callThis()
undefined
6. V akcích , to se týká prvku, který přijal událost, to může být trochu složitější, budeme muset jít trochu dále a vytvořit jednoduchou HTML stránku.
<!DOCTYPE html>
<html>
<body>
<button onclick="this.style.backgroundColor='red'"> CHANGE COLOR </button>
</body>
</html>
Toto označení můžete otestovat jednoduchým vytvořením .html
stránku a poklepejte na ni.
7. Metody jako call(), apply() a bind() může na to odkazovat v jakémkoli objektu.
• call() and apply(): call()
a apply()
metoda s blízkými podobnostmi, což znamená, že mohou volat objekt a přitom předat jiný objekt jako argument původně volaného objektu. Zřejmý rozdíl mezi call()
a apply()
metoda spočívá v tom, jak berou argumenty. call()
metoda přijímá argumenty jako samostatné hodnoty, zatímco apply()
metoda využívá pole pro argumenty. Jak je znázorněno v příkladech níže:
Call() Příklad:
const buyer = {
printForm: function() {
return this.fullName + " bought a " + this.model + " for " +this.price ;
}
}
const details = {
fullName:"Chidi E. Egwu",
model: "Tesla",
price: 50000,
}
buyer.printForm.call(details);
vrátí výše uvedený kód
'Chidi E. Egwu bought a Tesla for 50000'
Můžete vidět, že metody call() berou jako argument jeden objekt.
použít() Příklad:
const buyer = {
printForm: function(model, price) {
return this.fullName + " bought a " + model + " for " + price;
}
}
const details = {
fullName:"Chidi E. Egwu",
}
buyer.printForm.apply(details, ['Tesla', 50000]);
výše uvedený kód vrací stejný výsledek jako metoda call(), ale dělá to pomocí více argumentů, jak bylo vysvětleno dříve.
'Chidi E. Egwu bought a Tesla for 50000'
• bind(): metoda bind umožňuje půjčování napříč funkcemi, příklad níže toto tvrzení lépe vysvětlí.
Příklad:
const buyerForm = {
fullName:"Chidi E. Egwu",
model: "Tesla",
printForm: function() {
return this.fullName;
}
}
const salesAgent = {
fullName:"Dorathy James",
}
let printAgent = buyerForm.printForm.bind(salesAgent);
printAgent();
Objekt salesAgent si vypůjčí metodu printForm od objektu BuyerForm a využije ji k vrácení celého jména agenta.
Shrnutí
Tento článek upozorňuje na různé aplikace a použití klíčového slova this v JavaScriptu; i když to není vyčerpávající, může být použit jako reference nebo odrazový můstek pro začátečníky, kteří se setkávají s tajemným JavaScriptem this
klíčové slovo poprvé. Ať už jste si přečetli tento článek z jakéhokoli důvodu, doufám, že se mi podařilo zodpovědět, ne-li všechny, alespoň většinu vašich otázek o tom, jak začít s tímto klíčovým slovem a porozumět jeho základům v JavaScriptu.