If you're seeing this message, it means we're having trouble loading external resources on our website.

თუ ვებფილტრს იყენებთ, დარწმუნდით, რომ *.kastatic.org და *.kasandbox.org დომენები არ არის დაბლოკილი.

ძირითადი მასალა

მიმოხილვა: ობიექტები

ეს იმ მასალის მიმოხილვაა, რომელიც განვიხილეთ ობიექტების ამ სახელმძღვანელოში.
გვაქვს მნიშვნელობების ბევრი ტიპი, რომელთა შენახვაც JavaScript-ის ცვლადებში შეგვიძლია. ზოგჯერ გვსურს ერთმანეთთან დაკავშირებული ცვლადების ერთად შენახვა: აქ საქმეში ერთვებიან ობიექტები!
ობიექტი მონაცემების ტიპია, რომელიც გვაძლევს საშუალებას, შევინახოთ თვისებების სია ერთ ცვლადში. ობიექტის შესაქმნელად უნდა გამოვაცხადოთ ცვლადი ზუსტად ისევე, როგორც ჩვეულებრივ ვაცხადებთ ხოლმე და შემდეგ ფიგურულ ფრჩხილებში ჩავსვათ გასაღებების (რითაც მივმართავთ მნიშვნელობებს) და მნიშვნელობების წყვილები:
var objectName = { 
  propertyName: propertyValue,
  propertyName: propertyValue,
  ...
};
აი, ობიექტი, რომელიც აღწერს ვინსტონს - ამ ობიექტს აქვს ორი მახასიათებელი: hometown (მშობლიური ქალაქი) და hair (თმა), თითოეული მათგანის მნიშვნელობა არის სტრინგი:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};
აქ მოცემულია უფრო რთული ობიექტი, რომელიც აღწერს კატას 4 მახასიათებლით- age, furColor, likes, და birthday.
var lizzieTheCat = {
  age: 18,
  furColor: "grey",
  likes: ["catnip", "milk"],
  birthday: {"month": 7, "day": 17, "year": 1994}
};
დააკვირდით - ყოველი თვისება ინახავს მონაცემთა განსხვავებული ტიპის მქონე მნიშვნელობას - age ინახავს რიცხვს, furColor ინახავს სტრინგს, likes ინახავს მასივს და birthday ინახავს სხვა ობიექტს. ეს ობიექტების ყველაზე მაგარი თვისებაა (ნუ, ერთ-ერთი ყველაზე მაგარი) - მათ შეუძლიათ, საკუთარ თავში შეინახონ სხვა ობიექტები! შესაბამისად, შეგიძლიათ, გქონდეთ მრავალდონიანი ობიექტები რთული მონაცემების შესანახად.
შესაძლოა, ნახოთ ობიექტები, რომლებიც გამოცხადებულია მახასიათებელი სახელების ბრჭყალებში ჩასმის გამოყენებით, მაგალითად:
var aboutWinston = {
  "hometown": "Mountain View, CA",
  "hair": "no"
};
ეს არის უკვე ნანახი კოდის ეკვივალენტი, უბრალოდ ბრჭყალების გარეშე, თუმცა მის აკრეფას უფრო დიდი ხანი უნდა. ერთადერთი შემთხვევა, როდესაც ნამდვილად გჭირდებათ ბრჭყალები, დგება მაშინ, როცა თქვენი თვისების სახელი შეიცავს ცარიელ სივრცეს, მაგალითად:
var aboutWinston = {
  "his hair": "none"
};
აქ ჩვენ მოგვიწია ბრჭყალების გამოყენება, რადგან სხვა შემთხვევაში JavaScript-ის ინტერპრეტატორი დაიბნეოდა. აი, ჩემი რჩევა თქვენ: დავიწყოთ იმით, რომ სჯობს, უბრალოდ არ გამოიყენოთ ცარიელი სივრცე თქვენი თვისებების დასახელებებში! შესაბამისად, არასდროს მოგიწევთ ბრჭყალების გამოყენება თვისებების სახელებთან.

ობიექტის მახასიათებლებზე წვდომა

ობიექტი გამოუსადეგარია მანამ, სანამ არ შევძლებთ მასში ჩახედვას და სხვადასხვა თვისების მნიშვნელობის ამოღებას. ამის გაკეთება ორი გზითაა შესაძლებელი - პირველი, „წერტილის ნოტაციის" საშუალებით. ამ დროს ჩვენ ვწერთ ცვლადის სახელს, ვაყოლებთ მას „."-ს და თვისების სახელს:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};

text("Winston is from " + aboutWinston.hometown, 100, 100);
text("Winston has " + aboutWinston.hair + " hair", 100, 150);
ჩვენ ასევე შეგვიძლია „ფრჩხილის ნოტაციის" გამოყენება, რომელიც წააგავს მასივის ელემენტების ამოღების პრინციპს, როდესაც ვწერთ ცვლადის სახელს, შემდეგ კვადრატულ ფრჩხილებს და ამ ფრჩხილებში ვათავსებთ ბრჭყალებში ჩასმული თვისების სახელს:
var hisHometown = aboutWinston["hometown"];
var hisHair = aboutWinston["hair"];
თუ ეცდებით არარსებული თვისებს ამოღებას, მიიღებთ „undefined"-ს („განუსაზღვრელია"):
text("Winston's life goal is " + aboutWinston.lifeGoal, 100, 150);

ობიექტის მახასიათებლების მოდიფიკაცია

ზუსტად ისევე, როგორც ცვლადებში ვინახავთ სხვა მონაცემთა ტიპებს, შეგვიძლია, შევცვალოთ ობიექტის თვისებების მნიშვნელობები პროგრამის მსვლელობის ნებისმიერ მომენტში. ამისთვის ვიყენებთ წერტილის ან ფრჩხილის ნოტაციას:
aboutWinston.hair = "curly"; // ვინსტონი მიიღებს პარიკს!
აგრეთვე შეგვიძლია, დავამატოთ სრულიად ახალი მახასიათებლები!
aboutWinston.lifeGoal = "teach JavaScript";
თუ მახასიათებელთან მუშაობა დავასრულეთ, შეგვიძლია, ის წავშალოთ (მაგრამ უმეტეს შემთხვევაში მას, სავარაუდოდ, მნიშვნელობას შევუცვლით):
delete aboutWinston.hair;

ობიექტების მასივები

ვინაიდან უკვე იცით მასივებიც და ობიექტებიც, შეგიძლიათ ისინი გააერთიანოთ, რათა შექმნათ ობიექტების მასივები, რომლებიც პროგრამებში მონაცემების შენახვის ძალიან მოსახერხებელი გზაა. მაგალითად, კატების მასივი:
var myCats = [
  {name: "Lizzie", 
   age: 18},
  {name: "Daemon",
   age: 1}
];

for (var i = 0; i < myCats.length; i++) {
  var myCat = myCats[i];
  println(myCat.name + ' is ' + myCat.age + ' years old.');
}
გაითვალისწინეთ, რომ for ციკლის საშუალებით ობიექტების მასივს ზუსტად ისევე გადავუყვებით, როგორც რიცხვების ან სტრინგების მასივს. ყოველ იტერაციაში მივმართავთ მასივის მიმდინარე ელემენტს ფრჩხილების გამოყენებით, შემდეგ კი წერტილის საშუალებით მივმართავთ მასივის ელემენტის (ობიექტის) თვისებებს.
აი, კიდევ ერთი პრაქტიკული მაგალითი, რომელიც შესაძლოა, თქვენს პროგრამებში გამოიყენოთ, საკოორდინატო პოზიციების მასივი:
var positions = [
    {x: 200, y: 100},
    {x: 200, y: 200},
    {x: 200, y: 300}
];

for (var i = 0; i < positions.length; i++) {
    var position = positions[i];
    ellipse(position.x, position.y, 100, 100);
}
საკმაოდ კოხტაა, არა? ობიექტებმა შეიძლება, თავიდან დაგაბნიოთ, მაგრამ გააგრძელეთ მათი გამოყენება და საბოლოოდ მათზე დამოკიდებული გახდებით და ყველაფერს ობიექტად აქცევთ!

გსურთ, შეუერთდეთ დისკუსიას?

პოსტები ჯერ არ არის.
გესმით ინგლისური? დააწკაპუნეთ აქ და გაეცანით განხილვას ხანის აკადემიის ინგლისურენოვან გვერდზე.