Freecodecamp: الوصول إلى خصائص الكائنات مع المتغيرات محير؟

تم إنشاؤها على ٢١ ديسمبر ٢٠١٦  ·  10تعليقات  ·  مصدر: freeCodeCamp/freeCodeCamp


اسم التحدي


الوصول إلى خصائص الكائنات باستخدام المتغيرات

وصف المشكلة


هذا التحدي يحيرني. منذ في التحديات السابقة مع الوصول إلى الأشياء. قرأت أنه يجب استخدام الأقواس المربعة فقط عندما تكون هناك مساحة في العقار تحتاج إلى الوصول إليها. والآن في هذا التحدي يريدون مني استخدام تدوين الأقواس عندما لا تحتوي الخاصية على مسافة

help wanted

التعليق الأكثر فائدة

يعد تدوين
على سبيل المثال

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

يمكننا شرح هذا المفهوم في الوصف ، إذا لم يكن مطولًا جدًا

ال 10 كومينتر

/ cc @ FreeCodeCamp / moderators
هل يمكن لأي شخص المساعدة في الفرز إذا كانت التعليمات بحاجة إلى مزيد من التوضيح؟ قد أكون منحازة لكنهم يبدون مباشرة بالنسبة لي.

يعد تدوين
على سبيل المثال

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

يمكننا شرح هذا المفهوم في الوصف ، إذا لم يكن مطولًا جدًا

شكرًا @ Emt-Ant ، هل نحتاج إلى تحديث التعليمات لمزيد من التوضيح؟ رأيك؟

raisedadead @ Em-Ant ،
يمكنني فهم الالتباسات ، فالتحديث بمزيد من التوضيح يبدو فكرة جيدة.

للأشخاص الأحدث مع مثال مثل هذا:

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

من السهل التفكير ، "لماذا لا تفعل myObj.propName فقط لأننا نفعل الشيء نفسه"

مرة أخرى ، المثال الثاني:

var myDog = "Hunter";
var dogs = {
  Fido: "Mutt",
  Hunter: "Doberman",
  Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed);// "Doberman"

يفعل نفس الشيء. إنه فقط يربط القيمة بمتغير. لماذا نحتاج حتى إلى متغير ؟؟ أعتقد بالتأكيد أنه يجب علينا إضافة مثل ما قاله @ Em-Ant ، مثال حيث يتم تغيير المتغير ديناميكيًا. لأنك إذا كنت تقوم فقط بتعيين متغير يساوي سلسلة واستخدام المتغير ، فلن يكون له أي معنى. سيكون من العملي أكثر استخدام التدوين النقطي فقط. لا معنى للتحدي ما لم توضح سبب احتياجنا لاستخدام متغير في المقام الأول بدلاً من تدوين النقطة. لذا فإن تصويتي هو إضافة مثال آخر وتوضيح سبب استخدام متغير.

IsaacAbrahamson شكرا.

يحتاج المساهمون إلى إعادة تشكيل هذا التحدي إلى جانب Updating Object Properties أيضًا. يرجى التعليق أدناه مع إعادة البناء المقترحة لكليهما قبل تقديم طلب سحب.

/ ccerictleung الأفكار؟

يرجى أيضًا مراجعة systimotic ' https://github.com/FreeCodeCamp/FreeCodeCamp/issues/12125#issuecomment -269246606

مرحبا raisedadead ،
من خلال قراءة جميع القضايا المتعلقة برموز الكائن ، فهمت أنه ليس واضحًا للمبتدئين. بدوا لي مباشرة. من أجل جعل الأمر أكثر بساطة حول كيفية إجراء هذه التغييرات.

الوصول إلى الكائنات: (https://github.com/FreeCodeCamp/FreeCodeCamp/issues/12141)

var currency = {
   USA  : "dollar",
   London : "euro",
   India : "rupee",
}
function getCurrency(country){
 return country +" currency is "+currency[country] +" ";
}
getCurrency("USA") // "USA currency is dollar" 

لا أرى أي مشكلة في تحديث الكائنات. صححني إذا كنت مخطئا.
حتى أنني أفكر في إضافة تحدي الكائنات المتداخلة. اسمحوا لي أن أعرف كيف يمكنني المساعدة في تحسين هذا.

raisedadead دعنا نرى ما إذا كان بإمكاني معالجة مشكلة الكائن هذه.

يحتاج المساهمون إلى إعادة تشكيل هذا التحدي إلى جانب Updating Object Properties أيضًا. يرجى التعليق أدناه مع إعادة البناء المقترحة لكليهما قبل تقديم طلب سحب.

لذلك بالنسبة للتحدي الأولي على الكائنات ، "إنشاء كائنات جافا سكريبت" ، فإن الكائن النموذجي له جميع الخصائص التي تكون سلاسل. ربما يمكننا إضافة كائن نموذج آخر بخصائص مكتوبة مختلفة ، مثل

var sampleObject = {
  property_1: "Green",
  2: "Hal",
  "property_3": "Lantern"
};

قد يكون هذا أكثر إرباكًا ولكنه يستكشف إمكانيات الأشياء ، مما قد يدفع المعسكر إلى التحقيق قليلاً. بالإضافة إلى ذلك ، تحتوي التعليمات البرمجية الأولية لـ "الوصول إلى خصائص الكائنات باستخدام المتغيرات" على أرقام كخصائص لم يتم عرضها في التحديات الثلاثة السابقة على الكائنات.


قرأت أنه يجب استخدام الأقواس المربعة فقط عندما تكون هناك مساحة في العقار تحتاج إلى الوصول إليها.

يمكن إصلاح ذلك عن طريق تغيير كيفية وصفها لتدوين الأقواس في "الوصول إلى خصائص الكائن باستخدام تدوين القوس" . التعليمات

إذا كانت خاصية الكائن الذي تحاول الوصول إليه بها مسافة ، فستحتاج إلى استخدام تدوين القوس.

يمكن تغييرها إلى شيء مثل

إذا كانت خاصية الكائن الذي تحاول الوصول إليه بها مسافة ، فستحتاج إلى استخدام تدوين القوس. ومع ذلك ، لا يزال بإمكانك استخدام تدوين الأقواس في الخصائص بدون مسافات.

وبعد ذلك يمكننا تعديل كائن العينة لإظهار أنه يمكنك أيضًا الحصول على خصائص بدون مسافات.

var myObj = {
  "Space Name": "Kirk",
  "More Space": "Spock",
  "NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"];    // USS Enterprise

بالنسبة إلى "الوصول إلى خصائص الكائن باستخدام المتغيرات" ، أحب اقتراح @ Em-Ant لاستبدال المثال الأول ، على سبيل المثال ، بإزالة

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

ونقل مثال الكائن dogs كمثال أول ولديك شيء مثل

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name");
console.log(obj[someProp]); // "John"

كمثال ثان.

ماذا عن قول أن تدوين الأقواس هو شكل أكثر ديناميكية لمعالجة الكائنات. يمكنك استخدام سلاسل يمكنها الخروج من معظم قواعد تعريف JavaScript ، مثل البدء بالأرقام واستخدام السلسلة a بمسافات كأسماء خصائص. يمكنك أيضًا وضع المتغيرات داخل أقواس مربعة للسماح بتعيين الخصائص بسرعة أو عبر بعض التأثيرات الجانبية. قل على سبيل المثال أن لديك كائنًا في برنامجك ولست متأكدًا من الخصائص التي يجب أن تكون أثناء الإنشاء حتى تسمح للبرنامج بتعيينها أثناء وقت التشغيل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

vaibsharma picture vaibsharma  ·  3تعليقات

raisedadead picture raisedadead  ·  3تعليقات

jurijuri picture jurijuri  ·  3تعليقات

SaintPeter picture SaintPeter  ·  3تعليقات

DaphnisM picture DaphnisM  ·  3تعليقات