تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ امیر محمود کنگرلو
پاسخ به تمرین این جلسه
جامعه جاوا اسکریپت ایجاد شده در ۱۷ آذر ۱۴۰۰

سلام.

در زیر کد جواب سوال این جلسه را قرار می‌دهم.

        'use strict';
        function Person(name, age, height, wight) {
            name = name.charAt(0).toUpperCase() + name.substr(1,name.length);
            this.name = name;
            this.age = age;
            this.height = height;
            this.wight = wight;
            this.sayName = function () {
                return `Hi, my name is ${name}. I'm ${age} years old.`
            }
            this.BMI = function () {
                return wight / (height / 100) ^ 2;
            }
        }
        const amir = new Person('amir mahmood', 25, 178, 78);
        console.log(amir);
        console.log(amir.sayName());
        console.log(amir.BMI());

آیا روشی هست که وقتی که من فقط از amir میخواهم console.log بگیرم فانکشن‌های sayName , Bmi را هم به صورت invoke شده داشته باشم؟

چون اگر از لاگ amir را فقط داشته باشم اسم اون توابع را میآورد اما داخلشان چیزی نیست.

محسن رضوی ۰۶ بهمن ۱۴۰۰، ۱۲:۳۲

سلام

اگر درست متوجه منظور شما شده باشم، شما دنبال بدست آوردن نتیجه 2 تابع هستید.

  • به نظرم ما چون به جای نوشتن کلمه کلیدی Class از Function برای ساختن یک کلاس استفاده کردیم شما را کمی کیج کرده.

تا آنجایی که من می‌دانم نمی‌شود متد‌های (تابع‌های درون کلاس مثل sayName) یک کلاس را به شکلی که شما می‌خواهید درآورد چون هدف به وجود امدن آن‌ها چیز دیگری بوده.

خب برای این کار لازم نیست یک کلاس (در اینجا اسم کلاس Person می‌باشد)، بنویسید و بعد از آن یک شی از کلاس (شی amir) را بسازید. شما می‌توانید با نوشتن 3 تابع مثل زیر این کار را انجام دهید.

        'use strict';
        function personInfoLog(name, age, height, wight) {
            return console.log(`${sayName(name, age)}
BMI is: ${BMI(height, wight)}`);
        }
        function sayName(name, age) {
            return `Hi, my name is ${name}. I'm ${age} years old.`
        }
        function BMI(height, wight) {
            return wight / (height / 100) ^ 2;
        }
        
        personInfoLog('amir mahmood', 25, 178, 78);

موفق باشید.

امیر محمود کنگرلو ۰۶ بهمن ۱۴۰۰، ۱۷:۰۸