Ð ÑÑой ÑÑаÑÑе Ð¼Ñ ÑаÑÑмоÑÑим обÑекÑÑ Ð² JavaScript. ÐÑ Ð±Ñдем ÑазбиÑаÑÑ Ð¾ÑÐ½Ð¾Ð²Ñ ÑинÑакÑиÑа обÑекÑов JavaScript и заново изÑÑим некоÑоÑÑе возможноÑÑи JavaScript, коÑоÑÑе Ð¼Ñ Ñже иÑÑледовали Ñанее на кÑÑÑе, подÑвеÑдив ÑÐ¾Ñ ÑакÑ, ÑÑо болÑÑÐ°Ñ ÑаÑÑÑ ÑÑнкÑионалÑноÑÑи, Ñ ÐºÐ¾ÑоÑой Ð¼Ñ Ñже ÑÑолкнÑлиÑÑ, в дейÑÑвиÑелÑноÑÑи ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑами.
ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе знаниÑ: ÐлеменÑаÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑÐ½Ð°Ñ Ð³ÑамоÑноÑÑÑ, базовое понимание HTML и CSS, знакомÑÑво Ñ Ð¾Ñновами JavaScript (Ñм. ÐеÑвÑе Ñаги и СÑÑÑкÑÑÑнÑе ÑлеменÑÑ). ЦелÑ: ÐонимаÑÑ Ð¾ÑÐ½Ð¾Ð²Ñ ÑеоÑии пеÑед наÑалом обÑекÑно-оÑиенÑиÑованного пÑогÑаммиÑованиÑ, как ÑÑо ÑвÑзано Ñ JavaScript ("болÑÑинÑÑво ÑÑÑноÑÑей ÑвлÑÑÑÑÑ Ð¾Ð±ÑекÑами"), и как наÑаÑÑ ÑабоÑÑ Ñ Ð¾Ð±ÑекÑами JavaScript. ÐÑÐ½Ð¾Ð²Ñ Ð¾Ð±ÑекÑовÐбÑÐµÐºÑ â ÑÑо ÑовокÑпноÑÑÑ ÑвÑзаннÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸/или ÑÑнкÑионалÑнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей. ÐбÑÑно ÑоÑÑоÑÑ Ð¸Ð· неÑколÑÐºÐ¸Ñ Ð¿ÐµÑеменнÑÑ Ð¸ ÑÑнкÑий, коÑоÑÑе назÑваÑÑÑÑ ÑвойÑÑва и меÑодÑ, еÑли они Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð²Ð½ÑÑÑи обÑекÑов. РазбеÑÑм пÑимеÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ, как они вÑглÑдÑÑ.
ЧÑÐ¾Ð±Ñ Ð½Ð°ÑаÑÑ, ÑкопиÑÑйÑе Ñебе oojs.html Ñайл. РнÑм ÑодеÑжиÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð°Ð»Ð¾: <script>
ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð² нÑм иÑÑ
одного кода. ÐÑ Ð±Ñдем иÑполÑзоваÑÑ ÑÑо как оÑÐ½Ð¾Ð²Ñ Ð´Ð»Ñ Ð¸Ð·ÑÑÐµÐ½Ð¸Ñ Ð¾Ñнов ÑинÑакÑиÑа обÑекÑов. Ðо вÑÐµÐ¼Ñ ÑабоÑÑ Ñ ÑÑим пÑимеÑом Ñ Ð²Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð¾ÑкÑÑÑÐ°Ñ ÐºÐ¾Ð½ÑÐ¾Ð»Ñ JavaScript инÑÑÑÑменÑов ÑазÑабоÑÑика, гоÑÐ¾Ð²Ð°Ñ Ðº Ð²Ð²Ð¾Ð´Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
команд.
Ðак и во Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑлÑÑаÑÑ Ð² JavaScript, Ñоздание обÑекÑа ÑаÑÑо наÑинаеÑÑÑ Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸ иниÑиализаÑии пеÑеменной. ÐопÑобÑйÑе ввеÑÑи ÑледÑÑÑий код JavaScript в Ð²Ð°Ñ Ñайл, а заÑем ÑÐ¾Ñ ÑаниÑе Ñайл и обновиÑе ÑÑÑаниÑÑ Ð±ÑаÑзеÑа:
ÐÑли Ð²Ñ Ð²Ð²ÐµÐ´ÑÑе person
в ÑекÑÑовое JS конÑÐ¾Ð»Ñ Ð¸ нажмÑÑе клавиÑÑ Enter, должен полÑÑиÑÑÑÑ ÑледÑÑÑий ÑезÑлÑÑаÑ:
ÐоздÑавлÑем, Ð²Ñ ÑолÑко ÑÑо Ñоздали Ð²Ð°Ñ Ð¿ÐµÑвÑй обÑекÑ. Ðо ÑÑо пÑÑÑой обÑекÑ, поÑÑÐ¾Ð¼Ñ Ð¼Ñ Ð½Ðµ можем Ñ Ð½Ð¸Ð¼ ниÑего ÑделаÑÑ. ÐавайÑе обновим Ð½Ð°Ñ Ð¾Ð±ÑекÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½ вÑглÑдел Ñак:
const person = {
name: ["Bob", "Smith"],
age: 32,
gender: "male",
interests: ["music", "skiing"],
bio: function () {
alert(
this.name[0] +
" " +
this.name[1] +
" is " +
this.age +
" years old. He likes " +
this.interests[0] +
" and " +
this.interests[1] +
".",
);
},
greeting: function () {
alert("Hi! I'm " + this.name[0] + ".");
},
};
ÐоÑле ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸ обновлениÑ, попÑобÑйÑе ввеÑÑи ÑÑо-нибÑÐ´Ñ ÑледÑÑÑее в конÑÐ¾Ð»Ñ JavaScript бÑаÑзеÑа:
person.name;
person.name[0];
person.age;
person.interests[1];
person.bio();
person.greeting();
Ðак видиÑе, Ð½Ð°Ñ Ð¾Ð±ÑÐµÐºÑ ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑе даннÑе, а Ñакже неÑколÑко меÑодов. У Ð½Ð°Ñ Ð¶Ðµ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÑоÑÑого ÑинÑакÑиÑа еÑÑÑ Ð´Ð¾ÑÑÑп к ним.
ÐÑимеÑание: ÐÑли Ñ Ð²Ð°Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ»Ð¸ пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð¿Ñименением Ñайла в ÑабоÑе, попÑобÑйÑе ÑÑавниÑÑ Ð²Ð°Ñ ÐºÐ¾Ð´ Ñ Ð½Ð°Ñей веÑÑией â Ñм. oojs-finished.html (Ñакже see it running live). Ðдна из ÑаÑпÑоÑÑÑанÑннÑÑ Ð¾Ñибок, когда Ð²Ñ Ð½Ð°ÑинаеÑе Ñ Ð¾Ð±ÑекÑами ÑÑавиÑÑ Ð·Ð°Ð¿ÑÑÑÑ Ð² конÑе поÑледнего Ñлена â ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº оÑибке.
ÐÑак ÑÑо здеÑÑ Ð¿ÑоиÑÑ
одиÑ? ÐбÑÐµÐºÑ ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· неÑколÑкиÑ
ÑлеменÑов, каждÑй из коÑоÑÑÑ
Ð¸Ð¼ÐµÐµÑ ÑÐ²Ð¾Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ (пÑÐ¸Ð¼ÐµÑ name
и age
вÑÑе), и знаÑение (пÑÐ¸Ð¼ÐµÑ ['Bob', 'Smith']
и 32
). ÐÐ°Ð¶Ð´Ð°Ñ Ð¿Ð°Ñа название/знаÑение Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð·Ð°Ð¿ÑÑой, а название и знаÑение в каждом ÑлÑÑае ÑазделÑÑÑÑÑ Ð´Ð²Ð¾ÐµÑоÑием. СинÑакÑÐ¸Ñ Ð²Ñегда ÑледÑÐµÑ ÑÑÐ¾Ð¼Ñ Ð¾Ð±ÑазÑÑ:
const objectName = {
member1Name: member1Value,
member2Name: member2Value,
member3Name: member3Value,
};
ÐнаÑение Ñлена обÑекÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñем Ñгодно â в наÑем обÑекÑе person еÑÑÑ ÑÑÑока, ÑиÑло, два маÑÑива, и две ÑÑнкÑии. ÐеÑвÑе ÑеÑÑÑе ÑлеменÑа ÑÑо ÑлеменÑÑ Ð´Ð°Ð½Ð½ÑÑ , оÑноÑÑÑиеÑÑ Ðº ÑвойÑÑвам обÑекÑа. ÐоÑледние два ÑлеменÑа ÑвлÑÑÑÑÑ ÑÑнкÑиÑми, коÑоÑÑе позволÑÑÑ Ð¾Ð±ÑекÑÑ ÑÑо-Ñо ÑделаÑÑ Ñ ÑлеменÑами даннÑÑ , и назÑваÑÑÑÑ Ð¼ÐµÑодами обÑекÑа.
Такие обÑекÑÑ Ð½Ð°Ð·ÑваÑÑÑÑ Ð»Ð¸ÑеÑалами обÑекÑа (object literal) â Ð¼Ñ Ð±ÑквалÑно впиÑали вÑе ÑодеÑжимое обÑекÑа Ð´Ð»Ñ ÐµÐ³Ð¾ ÑозданиÑ. ÐÑÐ¾Ñ ÑпоÑоб ÑилÑно оÑлиÑаеÑÑÑ Ð¾Ñ Ð¾Ð±ÑекÑов ÑеализованнÑÑ ÐºÐ»Ð°ÑÑами, коÑоÑÑе Ð¼Ñ ÑаÑÑмоÑÑим позже.
ÐÑÐµÐ½Ñ ÑаÑÑо Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑа иÑполÑзÑеÑÑÑ Ð»Ð¸ÑеÑал обÑекÑа когда вам нÑжно каким-Ñо обÑазом пеÑенеÑÑи ÑÑд ÑÑÑÑкÑÑÑиÑованнÑÑ , ÑвÑзаннÑÑ ÑлеменÑов даннÑÑ , напÑимеÑ, оÑпÑавлÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° ÑеÑвеÑ, Ð´Ð»Ñ ÑазмеÑÐµÐ½Ð¸Ñ Ð¸Ñ Ð² базе даннÑÑ . ÐÑпÑавка одного обÑекÑа намного ÑÑÑекÑивнее, Ñем оÑпÑавка неÑколÑÐºÐ¸Ñ ÑлеменÑов по оÑделÑноÑÑи, и Ñ Ð½Ð¸Ð¼ легÑе ÑабоÑаÑÑ Ñем Ñ Ð¼Ð°ÑÑивом, еÑли ÑÑебÑеÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑиÑиÑоваÑÑ Ð¾ÑделÑнÑе ÑлеменÑÑ Ð¿Ð¾ имени.
ТоÑеÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ (Dot notation)ÐÑÑе Ð²Ñ Ð¿Ð¾Ð»ÑÑили доÑÑÑп к ÑвойÑÑвам и меÑодам иÑполÑзÑÑ ÑоÑеÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ (dot notation). ÐÐ¼Ñ Ð¾Ð±ÑекÑа (person) дейÑÑвÑÐµÑ ÐºÐ°Ðº пÑоÑÑÑанÑÑво имÑн (namespace) â оно должно бÑÑÑ Ð²Ð²ÐµÐ´ÐµÐ½Ð¾ пеÑвÑм, Ð´Ð»Ñ Ñого ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп ко вÑÐµÐ¼Ñ ÑÑо заклÑÑено (encapsulated) внÑÑÑи обÑекÑа. Ðалее Ð²Ñ Ð¿Ð¸ÑеÑе ÑоÑкÑ, заÑем ÑлеменÑ, к коÑоÑÐ¾Ð¼Ñ Ñ Ð¾ÑиÑе полÑÑиÑÑ Ð´Ð¾ÑÑÑп â ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð¼Ñ Ð¿ÑоÑÑого ÑвойÑÑва, ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива, или вÑзов одного из меÑодов обÑекÑа, напÑимеÑ:
person.age;
person.interests[1];
person.bio();
ÐнÑÑÑенние пÑоÑÑÑанÑÑва имÑн (Sub-namespaces)
Ðожно даже ÑделаÑÑ Ð·Ð½Ð°Ñением ÑлеменÑа обÑекÑа дÑÑгой обÑекÑ. ÐапÑимеÑ, попÑобÑйÑе измениÑÑ Ð·Ð½Ð°Ñение ÑвойÑÑва name Ñ Ñакого
на Ñакое
name : {
first: 'Bob',
last: 'Smith'
},
ÐдеÑÑ Ð¼Ñ ÑакÑиÑеÑки ÑоздаÑм внÑÑÑеннее пÑоÑÑÑанÑÑво имÑн (sub-namespace). ÐÑо звÑÑÐ¸Ñ Ñложно, но на Ñамом деле ÑÑо не Ñак â Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑÑим ÑлеменÑам вам нÑжно ÑделаÑÑ Ð¾Ð´Ð¸Ð½ дополниÑелÑнÑй Ñаг Ñ ÐµÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑоÑкой. ÐопÑобÑйÑе в конÑоли бÑаÑзеÑа ÑледÑÑÑее:
person.name.first;
person.name.last;
Ðажно: Ðа ÑÑом ÑÑапе вам Ñакже нÑжно бÑÐ´ÐµÑ Ð¿ÐµÑеÑмоÑÑеÑÑ ÐºÐ¾Ð´ меÑода и измениÑÑ Ð²Ñе ÑкземплÑÑÑ Ñ
на
ÐнаÑе ваÑи меÑÐ¾Ð´Ñ Ð±Ð¾Ð»ÑÑе не бÑдÑÑ ÑабоÑаÑÑ.
СкобоÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ (Bracket notation)СÑÑеÑÑвÑÐµÑ Ð´ÑÑгой ÑпоÑоб полÑÑиÑÑ ÑвойÑÑва обÑекÑа â иÑполÑзоваÑÑ ÑкобоÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ (bracket notation). ÐмеÑÑо напиÑÐ°Ð½Ð¸Ñ ÑÑого кода:
person.age;
person.name.first;
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑледÑÑÑий
person["age"];
person["name"]["first"];
ÐÑо вÑглÑÐ´Ð¸Ñ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ñ Ð¾Ð¶Ðµ на Ñо, как Ð²Ñ Ð¿Ð¾Ð»ÑÑаеÑе ÑлеменÑÑ Ð¼Ð°ÑÑива, и в пÑинÑипе ÑÑо Ñак и еÑÑÑ â вмеÑÑо иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑловÑÑ Ð¸Ð½Ð´ÐµÐºÑов Ð´Ð»Ñ Ð²ÑбоÑа ÑлеменÑа, Ð²Ñ Ð°ÑÑоÑииÑÑеÑе Ð¸Ð¼Ñ ÑвойÑÑва Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ знаÑениÑ. ÐиÑего ÑдивиÑелÑного, ÑÑо ÑÑи обÑекÑÑ Ð¸Ð½Ð¾Ð³Ð´Ð° назÑваÑÑ Ð°ÑÑоÑиаÑивнÑми маÑÑивами â они ÑопоÑÑавлÑÑÑ ÑÑÑоки Ñо знаÑениÑми Ñак же, как маÑÑÐ¸Ð²Ñ ÑопоÑÑавлÑÑÑ ÑиÑловÑе индекÑÑ Ñо знаÑениÑми.
ÐапиÑÑ ÑлеменÑов в обÑекÑÐо ÑÐ¸Ñ Ð¿Ð¾Ñ Ð¼Ñ ÑаÑÑмаÑÑивали ÑолÑко возвÑÐ°Ñ (или полÑÑение) ÑлеменÑов обÑекÑа â Ð²Ñ Ñак же можеÑе ÑÑÑановиÑÑ (обновиÑÑ) знаÑение ÑлеменÑа обÑекÑа пÑоÑÑо обÑÑвив ÑлеменÑ, коÑоÑÑй Ð²Ñ Ñ Ð¾ÑиÑе ÑÑÑановиÑÑ (иÑполÑзÑÑ ÑоÑеÑнÑÑ Ð¸Ð»Ð¸ ÑкобоÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ), напÑимеÑ:
person.age = 45;
person["name"]["last"] = "Cratchit";
ÐопÑобÑйÑе ввеÑÑи ÑÑи ÑÑÑоки, а заÑем Ñнова веÑниÑе ÑлеменÑÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ, как они изменилиÑÑ
person.age;
person["name"]["last"];
ÐÑ Ð¼Ð¾Ð¶ÐµÑе не пÑоÑÑо обновлÑÑÑ Ð¸ ÑÑÑанавливаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑвойÑÑв и меÑодов обÑекÑа, а Ñак же ÑÑÑанавливаÑÑ ÑовеÑÑенно новÑе ÑлеменÑÑ. ÐопÑобÑйÑе Ð¸Ñ Ð² конÑоли JS:
person["eyes"] = "hazel";
person.farewell = function () {
alert("Bye everybody!");
};
ТепеÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð²Ð°Ñи новÑе ÑлеменÑÑ:
person["eyes"];
person.farewell();
Ðдним из полезнÑÑ Ð°ÑпекÑов ÑкобоÑной запиÑи ÑвлÑеÑÑÑ Ñо, ÑÑо Ñ ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ динамиÑеÑки задаваÑÑ Ð½Ðµ ÑолÑко знаÑÐµÐ½Ð¸Ñ ÑлеменÑов, но и Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð°. ÐÑедположим, ÑÑо Ð¼Ñ Ñ Ð¾Ñим, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑзоваÑели могли Ñ ÑаниÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ , Ð²Ð²ÐµÐ´Ñ Ð¸Ð¼Ñ Ð¸ знаÑение ÑлеменÑа в два ÑледÑÑÑÐ¸Ñ Ð¿Ð¾Ð»Ñ? ÐÑ Ð¼Ð¾Ð³Ð»Ð¸ Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ ÑÑи знаÑÐµÐ½Ð¸Ñ ÑледÑÑÑим обÑазом:
let myDataName = nameInput.value;
let myDataValue = nameValue.value;
ÐаÑем Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ добавиÑÑ Ð¸Ð¼Ñ Ð¸ знаÑение ÑÑого нового ÑлеменÑа в обÑÐµÐºÑ person
Ñаким обÑазом:
person[myDataName] = myDataValue;
ЧÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ ÑÑо, попÑобÑйÑе добавиÑÑ ÑледÑÑÑие ÑÑÑоки в Ñвой код, поÑле закÑÑваÑÑей Ñкобки обÑекÑа person
:
let myDataName = "height";
let myDataValue = "1.75m";
person[myDataName] = myDataValue;
ТепеÑÑ Ð¿Ð¾Ð¿ÑобÑйÑе ÑÐ¾Ñ ÑаниÑÑ Ð¸ обновиÑÑ, заÑем введиÑе ÑледÑÑÑее в конÑÐ¾Ð»Ñ Ð±ÑаÑзеÑа:
Ðобавление ÑвойÑÑва обÑекÑа Ñ Ð¸ÑполÑзованием вÑÑеопиÑанного меÑода невозможно Ñ Ð¸ÑполÑзованием ÑоÑеÑной запиÑи, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ ÑолÑко лиÑеÑалÑное Ð¸Ð¼Ñ ÑлеменÑа, а не знаÑение пеÑеменной ÑказÑваÑÑее на имÑ.
ЧÑо Ñакое "this"?Ðозможно, Ð²Ñ Ð·Ð°Ð¼ÐµÑили ÑÑо-Ñо ÑÑÑанное в наÑÐ¸Ñ Ð¼ÐµÑÐ¾Ð´Ð°Ñ . ÐоÑмоÑÑиÑе на ÑÑÐ¾Ñ Ð¿ÑимеÑ:
greeting: function() {
alert('Hi! I\'m ' + this.name.first + '.');
}
ÐÑ, веÑоÑÑно, задаÑÑеÑÑ Ð²Ð¾Ð¿ÑоÑом, ÑÑо Ñакое "this"? ÐлÑÑевое Ñлово this
, ÑÑÑлаеÑÑÑ Ð½Ð° ÑекÑÑий обÑекÑ, внÑÑÑи коÑоÑого пиÑеÑÑÑ ÐºÐ¾Ð´ â поÑÑÐ¾Ð¼Ñ Ð² наÑем ÑлÑÑае this
Ñавен обÑекÑÑ person
. Ðо поÑÐµÐ¼Ñ Ð¿ÑоÑÑо не напиÑаÑÑ person
? Ðак Ð²Ñ ÑвидиÑе в ÑÑаÑÑе Object-oriented JavaScript for beginners (ÐбÑекÑно-оÑиенÑиÑованнÑй JavaScript Ð´Ð»Ñ Ð½Ð°ÑинаÑÑиÑ
), когда Ð¼Ñ Ð½Ð°Ñинаем ÑоздаваÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑÑ Ð¸ Ñ.д., this
оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ â он вÑегда бÑÐ´ÐµÑ Ð³Ð°ÑанÑиÑоваÑÑ, ÑÑо иÑполÑзÑеÑÑÑ Ð²ÐµÑное знаÑение, когда конÑекÑÑ ÑлеменÑа изменÑеÑÑÑ (напÑимеÑ, два ÑазнÑÑ
ÑкземплÑÑа обÑекÑа person
могÑÑ Ð¸Ð¼ÐµÑÑ ÑазнÑе имена, но заÑ
оÑÑÑ Ð¸ÑполÑзоваÑÑ ÑÐ²Ð¾Ñ ÑобÑÑвенное Ð¸Ð¼Ñ Ð¿Ñи пÑивеÑÑÑвии.
ÐавайÑе пÑоиллÑÑÑÑиÑÑем, ÑÑо Ð¼Ñ Ð¸Ð¼ÐµÐµÐ¼ в видÑ, Ñ ÑпÑоÑÑнной паÑой обÑекÑов person
:
const person1 = {
name: "Chris",
greeting: function () {
alert("Hi! I'm " + this.name + ".");
},
};
const person2 = {
name: "Brian",
greeting: function () {
alert("Hi! I'm " + this.name + ".");
},
};
Ð ÑÑом ÑлÑÑае, person1.greeting()
вÑÐ²ÐµÐ´ÐµÑ "Hi! I'm Chris.". person2.greeting()
, Ñ Ð´ÑÑгой ÑÑоÑонÑ, вÑÐ²ÐµÐ´ÐµÑ "Hi! I'm Brian.", Ñ
оÑÑ ÐºÐ¾Ð´ меÑода одинаковÑй в обоиÑ
ÑлÑÑаÑÑ
. Ðак Ð¼Ñ Ñказали Ñанее, this
Ñавен обÑекÑÑ, внÑÑÑи коÑоÑого наÑ
одиÑÑÑ ÐºÐ¾Ð´ â ÑÑо не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, когда Ð²Ñ Ð¿Ð¸ÑиÑе лиÑеÑÐ°Ð»Ñ Ð¾Ð±ÑекÑов вÑÑÑнÑÑ, но оно дейÑÑвиÑелÑно помогаеÑ, когда Ð²Ñ Ð³ÐµÐ½ÐµÑиÑÑеÑе обÑекÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки (напÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑÑ). ÐÑо ÑÑÐ°Ð½ÐµÑ Ð¿Ð¾Ð½ÑÑнее ÑÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ.
Ðока Ð²Ñ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸Ð»Ð¸ ÑÑи пÑимеÑÑ, Ð²Ñ Ð²ÐµÑоÑÑно замеÑили, ÑÑо ÑоÑеÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ, коÑоÑÑÑ Ð²Ñ Ð¸ÑполÑзовали, вÑглÑÐ´Ð¸Ñ Ð¾ÑÐµÐ½Ñ Ð·Ð½Ð°ÐºÐ¾Ð¼Ð¾. ÐÑо поÑомÑ, ÑÑо Ð²Ñ Ð¸ÑполÑзовали ÐµÑ Ð½Ð° пÑоÑÑжении вÑего кÑÑÑа! ÐаждÑй Ñаз, когда Ð¼Ñ ÑабоÑаем над пÑимеÑом, иÑполÑзÑÑÑим вÑÑÑоеннÑй API бÑаÑзеÑа или обÑÐµÐºÑ JavaScript, Ð¼Ñ Ð¸ÑполÑзовали обÑекÑÑ, поÑÐ¾Ð¼Ñ ÑÑо Ñакие ÑÑнкÑии поÑÑÑÐ¾ÐµÐ½Ñ Ñ Ð¸ÑполÑзованием ÑÐµÑ Ð¶Ðµ ÑÑÑÑкÑÑÑ Ð¾Ð±ÑекÑов, коÑоÑÑе Ð¼Ñ Ð·Ð´ÐµÑÑ ÑаÑÑмаÑÑивали, Ñ Ð¾ÑÑ Ð¸ более ÑложнÑе, Ñем наÑи ÑобÑÑвеннÑе полÑзоваÑелÑÑкие пÑимеÑÑ.
ÐоÑÑомÑ, когда Ð²Ñ Ð¸ÑполÑзовали ÑÑÑоковÑе меÑодÑ, Ñакие как:
ÐÑ Ð¸ÑполÑзовали меÑод доÑÑÑпнÑй в ÑкземплÑÑе клаÑÑа String
. ÐаждÑй Ñаз ÑÐ¾Ð·Ð´Ð°Ð²Ð°Ñ ÑÑÑÐ¾ÐºÑ Ð² ваÑем коде, ÑÑа ÑÑÑока авÑомаÑиÑеÑки ÑоздаÑÑÑÑ ÐºÐ°Ðº ÑкземплÑÑ String
, и поÑÑÐ¾Ð¼Ñ Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко обÑиÑ
меÑодов/ÑвойÑÑв, доÑÑÑпнÑÑ
на нем.
Ðогда Ð²Ñ Ð¾Ð±ÑаÑалиÑÑ Ðº обÑекÑной модели докÑменÑа (DOM), иÑполÑзÑÑ ÑледÑÑÑие ÑÑÑоки:
const myDiv = document.createElement("div");
const myVideo = document.querySelector("video");
ÐÑ Ð¸ÑполÑзовали меÑÐ¾Ð´Ñ Ð´Ð¾ÑÑÑпнÑе в ÑкземплÑÑе клаÑÑа Document
. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ загÑÑженной веб-ÑÑÑаниÑÑ ÑоздаÑÑÑÑ ÑкземплÑÑ Document
, назÑваемÑй document
, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ð²ÑÑ ÑÑÑÑкÑÑÑÑ ÑÑÑаниÑÑ, ÐµÑ ÑодеÑжимое и дÑÑгие ÑÑнкÑии, Ñакие как URL-адÑеÑ. ÐпÑÑÑ Ð¶Ðµ, ÑÑо ознаÑаеÑ, ÑÑо он Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко обÑиÑ
меÑодов/ÑвойÑÑв, доÑÑÑпнÑÑ
на нем.
То же Ñамое оÑноÑиÑÑÑ Ð¸ к лÑÐ±Ð¾Ð¼Ñ Ð´ÑÑÐ³Ð¾Ð¼Ñ Ð²ÑÑÑÐ¾ÐµÐ½Ð½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ/API, коÑоÑÑй Ð²Ñ Ð¸ÑполÑзовали â Array
, Math
, и Ñ. д.
ÐбÑаÑиÑе внимание, ÑÑо вÑÑÑоеннÑе обÑекÑÑ/API не вÑегда ÑоздаÑÑ ÑкземплÑÑÑ Ð¾Ð±ÑекÑов авÑомаÑиÑеÑки. Ðак пÑимеÑ, Notifications API â коÑоÑÑй позволÑÐµÑ Ð½Ð¾Ð²Ñм бÑаÑзеÑам запÑÑкаÑÑ ÑиÑÑемнÑе ÑведомлениÑ, ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð²Ñ Ñоздавали новÑй ÑкземплÑÑ Ð¾Ð±ÑекÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑведомлениÑ, коÑоÑое Ð²Ñ Ñ Ð¾ÑиÑе запÑÑÑиÑÑ. ÐопÑобÑйÑе ввеÑÑи ÑледÑÑÑее в конÑÐ¾Ð»Ñ JavaScript:
const myNotification = new Notification("Hello!");
ÐпÑÑÑ Ð¶Ðµ, Ð¼Ñ ÑаÑÑмоÑÑим конÑÑÑÑкÑоÑÑ Ð² ÑледÑÑÑей ÑÑаÑÑе.
ÐÑимеÑание: Ðолезно подÑмаÑÑ Ð¾ Ñом, как обÑекÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвÑÑÑ Ð¿Ð¾ÑÑедÑÑвом пеÑедаÑи ÑообÑений - когда обÑекÑÑ ÑÑебÑеÑÑÑ Ð´ÑÑгой обÑÐµÐºÑ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо дейÑÑвиÑ, он ÑаÑÑо оÑпÑавлÑÐµÑ ÑообÑение дÑÑÐ³Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ ÑеÑез один из его меÑодов и ждÑÑ Ð¾ÑвеÑа, коÑоÑÑй Ð¼Ñ Ð·Ð½Ð°ÐµÐ¼ как возвÑаÑаемое (return) знаÑение.
РезÑмеÐоздÑавлÑем, Ð²Ñ Ð´Ð¾ÑÑигли конÑа наÑей пеÑвой ÑÑаÑÑи о обÑекÑаÑ
JS, ÑепеÑÑ Ñ Ð²Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ бÑÑÑ Ñ
оÑоÑее пÑедÑÑавление о Ñом, как ÑабоÑаÑÑ Ñ Ð¾Ð±ÑекÑами в JavaScript - в Ñом ÑиÑле ÑоздаваÑÑ Ñвои ÑобÑÑвеннÑе пÑоÑÑÑе обÑекÑÑ. ÐÑ Ñакже Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÑÑ, ÑÑо обÑекÑÑ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð² каÑеÑÑве ÑÑÑÑкÑÑÑ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑвÑзаннÑÑ
даннÑÑ
и ÑÑнкÑионалÑноÑÑи - еÑли Ð±Ñ Ð¼Ñ Ð¿ÑÑалиÑÑ Ð¾ÑÑлеживаÑÑ Ð²Ñе ÑвойÑÑва и меÑÐ¾Ð´Ñ Ð² наÑем обÑекÑе person
как оÑделÑнÑе пеÑеменнÑе и ÑÑнкÑии, ÑÑо бÑло неÑÑÑекÑивно, и Ð¼Ñ Ð±Ñ ÑиÑковали ÑÑолкнÑÑÑÑÑ Ñ Ð´ÑÑгими пеÑеменнÑми и ÑÑнкÑиÑми Ñ Ñакими же именами. ÐбÑекÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð½Ð°Ð¼ безопаÑно Ñ
ÑаниÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð² ÑвоÑм ÑобÑÑвенном блоке, вне опаÑноÑÑи.
Ð ÑледÑÑÑей ÑÑаÑÑе Ð¼Ñ Ð½Ð°ÑнÑм ÑаÑÑмаÑÑиваÑÑ ÑеоÑÐ¸Ñ Ð¾Ð±ÑекÑно-оÑиенÑиÑованного пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (ÐÐÐ) и как ÑÑи ÑÐµÑ Ð½Ð¸ÐºÐ¸ могÑÑ Ð±ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð² JavaScript
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4