JavaScript дозволÑÑ Ð¿ÑаÑÑваÑи з пÑимÑÑивами (ÑÑдок, ÑиÑло, ÑоÑо) Ñак Ñамо Ñк з обâÑкÑами. Ðони Ñакож надаÑÑÑ Ð¼ÐµÑоди Ð´Ð»Ñ ÑобоÑи. Ðи вивÑимо ÑÑ Ð½Ð°Ð¹Ð±Ð»Ð¸Ð¶Ñим ÑаÑом, але ÑпоÑаÑÐºÑ Ð¿Ð¾Ð´Ð¸Ð²Ð¸Ð¼Ð¾ÑÑ Ñк воно пÑаÑÑÑ, ÑÐ¾Ð¼Ñ Ñо пÑимÑÑиви не Ñ Ð¾Ð±âÑкÑами (Ñ ÑÑÑ Ð¼Ð¸ зÑобимо Ñе Ñе бÑлÑÑ Ð·ÑозÑмÑлим).
РозглÑнÑмо ÑÑзниÑÑ Ð¼Ñж пÑимÑÑивами Ñа обâÑкÑами.
ÐÑимÑÑив
- Ñ Ð·Ð½Ð°ÑеннÑм пÑимÑÑивного ÑипÑ
- ÑÑнÑÑ 7 ÑипÑв пÑимÑÑивÑв:
string,number,bigint,boolean,symbol,nullÑаundefined.
ÐбâÑкÑ
- можна збеÑÑгаÑи декÑлÑка знаÑÐµÐ½Ñ Ñк влаÑÑивоÑÑÑ.
- може бÑÑи ÑÑвоÑений за допомогоÑ
{}, напÑиклад:{name: "Ðван", age: 30}. Ð JavaScript ÑÑнÑÑÑÑ Ð¹ ÑнÑÑ Ð¾Ð±âÑкÑи: ÑÑнкÑÑÑ â Ñе Ñеж обâÑкÑи.
Ðдна з ÑÑÐºÐ°Ð²Ð¸Ñ ÑеÑей Ñодо обâÑкÑÑв полÑÐ³Ð°Ñ Ð² ÑомÑ, Ñо ми можемо збеÑÑгаÑи ÑÑнкÑÑÑ Ñк Ð¾Ð´Ð½Ñ Ð· його влаÑÑивоÑÑей.
let john = {
name: "John",
sayHi: function() {
alert("ÐÑивÑÑ, дÑÑже!");
}
};
john.sayHi(); // ÐÑивÑÑ, дÑÑже!
ÐÑже, ми ÑÑвоÑили обâÑÐºÑ john з меÑодом sayHi.
Ðже ÑÑнÑÑ Ð±Ð°Ð³Ð°Ñо вбÑÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±âÑкÑÑв, ÑÐºÑ Ð¿ÑаÑÑÑÑÑ Ð· даÑами, помилками, елеменÑами HTML Ñ Ñ.д. Ðони маÑÑÑ ÑÑÐ·Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ñ Ð¼ÐµÑоди.
Ðле за вÑе поÑÑÑбно плаÑиÑи!
ÐбâÑкÑи âважÑÑâ, нÑж пÑимÑÑиви. Ðони вимагаÑÑÑ Ð´Ð¾Ð´Ð°ÑÐºÐ¾Ð²Ð¸Ñ ÑеÑÑÑÑÑв Ð´Ð»Ñ Ð¿ÑдÑÑимки внÑÑÑÑÑнÑÐ¾Ñ Ð¾Ð±Ñобки.
ÐÑимÑÑив Ñк обâÑкÑ
ÐаÑмо паÑадокÑ, з Ñким зÑÑÑÑÑÑаÑÑÑÑÑ Ð°Ð²ÑÐ¾Ñ JavaScript:
- РбагаÑо ÑеÑей, ÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð° бÑло б зÑобиÑи з пÑимÑÑивом-ÑÑдком або ÑиÑлом. ÐÑло б добÑе оÑÑимаÑи доÑÑÑп до ÑÐ¸Ñ Ð¼ÐµÑодÑв.
- ÐÑимÑÑиви Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð±ÑÑи макÑималÑно Ñвидкими Ñа легкими.
Ð ÑÑÐµÐ½Ð½Ñ Ð²Ð¸Ð³Ð»ÑÐ´Ð°Ñ ÑÑÐ¾Ñ Ð¸ дивно, але Ñак Ñ Ñ:
- ÐÑимÑÑиви залиÑаÑÑÑÑÑ Ð¿ÑимÑÑивами. ÐиÑе знаÑеннÑ, Ñк ви Ñ Ñ Ð¾ÑÑли.
- JavaScript дозволÑÑ Ð¾ÑÑимаÑи доÑÑÑп до меÑодÑв Ñа влаÑÑивоÑÑей ÑÑдкÑв, ÑиÑел, бÑлеанÑв Ñа ÑимволÑв.
- ÐÐ»Ñ ÑÑого ÑÑвоÑÑÑÑÑÑÑ ÑпеÑÑалÑний âобâÑÐºÑ Ð¾Ð±Ð³Ð¾ÑÑкаâ з додаÑÐºÐ¾Ð²Ð¾Ñ ÑÑнкÑÑоналÑнÑÑÑÑ, Ñкий поÑÑм зниÑÑÑÑÑÑÑ.
ÐÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ пÑимÑÑÐ¸Ð²Ñ ÑÑвоÑÑÑÑÑÑÑ ÑÐ²Ð¾Ñ âобгоÑÑкаâ: String, Number, Boolean, Symbol Ñа BigInt. ÐÑже, вони мÑÑÑÑÑÑ ÑÑÐ·Ð½Ñ Ð½Ð°Ð±Ð¾Ñи меÑодÑв.
ÐапÑиклад: ÑÑнÑÑ Ñакий меÑод Ð´Ð»Ñ ÑÑдка, Ñк str.toUpperCase(), Ñкий повеÑне ÑÑдок str з великими лÑÑеÑами.
ÐÑÑ Ñк вÑн пÑаÑÑÑ:
let str = "ÐÑивÑÑ";
alert( str.toUpperCase() ); // ÐÐ ÐÐÐТ
Ðе Ñкладно, Ñак? ÐÑÑ Ñо Ñаме ÑÑаплÑÑÑÑÑÑ Ð² str.toUpperCase():
- Ð Ñдок
strÑ Ð¿ÑимÑÑивом. Ð¢Ð¾Ð¼Ñ Ð¿Ñд ÑÐ°Ñ Ð·Ð²ÐµÑÐ½ÐµÐ½Ð½Ñ Ð´Ð¾ його влаÑÑивоÑÑÑ ÑÑвоÑÑÑÑÑÑÑ ÑпеÑÑалÑний обâÑкÑ, Ñкий Ð·Ð½Ð°Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑÑдка Ñ Ð¼Ð°Ñ ÐºÐ¾ÑиÑÐ½Ñ Ð¼ÐµÑоди, ÑÐ°ÐºÑ ÑкtoUpperCase(). - Цей меÑод виконÑÑÑÑÑÑ Ñ Ð¿Ð¾Ð²ÐµÑÑÐ°Ñ Ð½Ð¾Ð²Ð¸Ð¹ ÑÑдок (Ñо показÑÑ
alert). - СпеÑÑалÑний обâÑÐºÑ ÑÑйнÑÑÑÑÑÑ, залиÑаÑÑи лиÑе пÑимÑÑив
str.
ÐÑже, пÑимÑÑиви можÑÑÑ Ð½Ð°Ð´Ð°Ð²Ð°Ñи меÑоди, але залиÑаÑÑÑÑÑ âлегкимиâ.
ÐвигÑн JavaScript добÑе опÑимÑзÑÑ Ñей пÑоÑеÑ. ÐÑн навÑÑÑ Ð¼Ð¾Ð¶Ðµ пÑопÑÑÑиÑи ÑÑвоÑÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñкового обâÑкÑа взагалÑ. Ðле вÑн вÑе Ñе повинен доÑÑимÑваÑиÑÑ ÑпеÑиÑÑкаÑÑÑ Ñ Ð²ÐµÑÑи Ñебе Ñак, наÑе вÑн ÑÑ ÑÑвоÑÑÑ.
ЧиÑло Ð¼Ð°Ñ ÑÐ²Ð¾Ñ Ð¼ÐµÑоди, напÑиклад: toFixed(n) â окÑÑглÑÑ ÑиÑло до Ð·Ð°Ð´Ð°Ð½Ð¾Ñ ÑоÑноÑÑÑ:
let n = 1.23456;
alert( n.toFixed(2) ); // 1.23
Ðи пеÑеглÑнемо бÑлÑÑ ÐºÐ¾Ð½ÐºÑеÑÐ½Ñ Ð¼ÐµÑоди Ñ ÑоздÑÐ»Ð°Ñ Ð§Ð¸Ñла Ñа Ð Ñдки.
String/Number/Boolean лиÑе Ð´Ð»Ñ Ð²Ð½ÑÑÑÑÑнÑого викоÑиÑÑаннÑÐеÑÐºÑ Ð¼Ð¾Ð²Ð¸ Ñк Java дозволÑÑÑÑ Ñвно ÑÑвоÑÑваÑи âобâÑÐºÑ Ð¾Ð±Ð³Ð¾ÑÑкÑâ Ð´Ð»Ñ Ð¿ÑимÑÑивÑв, викоÑиÑÑовÑÑÑи ÑинÑакÑÐ¸Ñ Ñк new Number(1) або new Boolean(false).
У JavaScript Ñе Ñакож можливо з ÑÑÑоÑиÑÐ½Ð¸Ñ Ð¿ÑиÑин, але надзвиÑайно не ÑекомендÑÑÑÑÑÑ. Це пÑизведе до непеÑедбаÑÑÐ²Ð°Ð½Ð¸Ñ ÑеÑей.
ÐапÑиклад:
alert( typeof 0 ); // "number"
alert( typeof new Number(0) ); // "object"!
ÐбâÑкÑи завжди повеÑÑаÑÑÑ true в if, оÑже ми побаÑимо alert:
let zero = new Number(0);
if (zero) { // zero Ñ true, ÑÐ¾Ð¼Ñ Ñо Ñе обâÑкÑ
alert( "zero Ñ true!?!" );
}
Ð ÑнÑого бокÑ, викоÑиÑÑÐ°Ð½Ð½Ñ ÑиÑ
же ÑамиÑ
ÑÑнкÑÑй String/Number/Boolean без new Ñ Ð°Ð±ÑолÑÑно ÑозÑÐ¼Ð½Ð¾Ñ Ñ ÐºÐ¾ÑиÑÐ½Ð¾Ñ ÑÑÑÑÑ. Ðони пеÑеÑвоÑÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ñ Ð²ÑдповÑдний Ñип: ÑÑдок, ÑиÑло або бÑлеве знаÑÐµÐ½Ð½Ñ (пÑимÑÑивÑ).
ÐапÑиклад, Ñе ÑÑлком пÑавилÑно:
let num = Number("123"); // конвеÑÑÑÑ ÑÑдок в ÑиÑло
ÐинÑÑки ÑÑановлÑÑÑ ÑпеÑÑалÑÐ½Ñ Ð¿ÑимÑÑиви null Ñ undefined. Ðони не маÑÑÑ Ð²ÑдповÑдниÑ
âобâÑкÑÑв обгоÑÑокâ Ñ Ð½Ðµ надаÑÑÑ Ð½ÑÑкиÑ
меÑодÑв. Ðи можемо назваÑи ÑÑ
âнайпÑимÑÑивнÑÑимиâ.
СпÑоба доÑÑÑÐ¿Ñ Ð´Ð¾ влаÑÑивоÑÑÑ Ñакого знаÑÐµÐ½Ð½Ñ Ð´Ð°ÑÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ:
alert(null.test); // помилка
ÐÑдÑÑмки
- ÐÑимÑÑиви, кÑÑм
nullÑundefined, даÑÑÑ Ð±Ð°Ð³Ð°Ñо коÑиÑÐ½Ð¸Ñ Ð¼ÐµÑодÑв. Ðи вивÑимо ÑÑ Ñ Ð½Ð°ÑÑÑÐ¿Ð½Ð¸Ñ ÑоздÑÐ»Ð°Ñ . - ФоÑмалÑно, ÑÑ Ð¼ÐµÑоди пÑаÑÑÑÑÑ ÑеÑез ÑимÑаÑÐ¾Ð²Ñ Ð¾Ð±âÑкÑи, але двигÑн JavaScript опÑимÑзовано Ð´Ð»Ñ Ñвидкого Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑÑй, ÑÐ¾Ð¼Ñ Ð½Ð°Ð¼ не ÑÑеба Ñ Ð²Ð¸Ð»ÑваÑиÑÑ.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)