با سلام خدمت استاد گرامی
میشه راهنمایی خودتون رو برای من در مورد قطعه کد زیر انجام بدید؟
var myObj = new Object(),
str = 'myString',
rand = Math.random(),
obj = new Object();
myObj.type = 'Dot syntax';
myObj['date created'] = 'String with space';
myObj[str] = 'String value';
myObj[rand] = 'Random Number';
myObj[obj] = 'Object';
myObj[''] = 'Even an empty string';
console.log(myObj);
متوجه نمیشم چرا مقادیر رو به این صورت وارد کرده و زمانی که
console.log(myObj.str);
چیزی خروجی نداره
ممنون
سلام علیرضا، با اجازه از خودت و استاد من جواب بدم
var myObj = new Object(),
str = 'myString',
rand = Math.random(),
obj = new Object();
این قسمت اومده چند متغیر رو دریک عبارت تعریف کرده در واقع چند چیز رو در یک خط به وجود آورده در همون سایت mozila بالاتر بیایید و اینجا رو دوباره مرور کنید یا Declare Variables in a Single Line رو جستجو کنید
کد پایین رو هم نگاه کنید داره با معلومات ذهن بازی میکنه و همه تغییرات رو فقط بر myObj اعمال میکنه با دقت دوباره نگاه کنید
myObj.type = 'Dot syntax';
myObj['date created'] = 'String with space';
myObj[str] = 'String value';
myObj[rand] = 'Random Number';
myObj[obj] = 'Object';
myObj[''] = 'Even an empty string';
دقیقا، فقط اومده دارایی به myObj داده یا همون property به object اضافه کرده اونم با دو روش، یکی نقطه ودیگری کروشه
میتونی باز هم در همون mozila در موردش بیشتر بخونی یا Property accessors in JavaScript رو جستجو کنید
حالا سوال شما که چرا عبارت پایینی چیزی نمایش نمیده؟
console.log(myObj.str);
با توجه به معلوماتمون تا الان باید متوجه شده باشیم که اصلا دارایی در myObj به اسم str نداریم اونی که اضافه شده
طبق متغییر هایی که اول تعریف شده، یعنی
str = 'myString'
myString است پس به همین دلیل با نوشتن myObj.str چیزی نشون داده نمیشه اما اگر عبارت زیر رو بنویسی
console.log(myObj.myString)
یه چیزی نمایش میده
سلام به جناب بابایی و آقا مهرداد و تشکر بابت پاسخی که دادن
پاسخ ایشان کامل و درست بود.
فقط اگر بخوام یه نکته بهش اضافه کنم در Best Practice های جاوا اسکریپت اومده که بهتره برای تعریف چند متغییر به طور همزمان به روش زیر عمل نشه:
var myObj = new Object(),
str = 'myString',
rand = Math.random(),
obj = new Object();
و بهتره به این شکل نوشته بشه:
var myObj = new Object();
var str = 'myString';
var rand = Math.random();
var obj = new Object();
هرچند خروجی هر ۲ کد یک چیزه ولی دومی هم خواناتره و هم جلوی بعضی از خطاهای سهوی را میگیره
در این مورد در قسمت اول جاوا اسکریپت سطح متوسط و با موضوع Best Practice ها مفصلا توضیح دادم.
امیدوارم موفق باشید