راکت
حل
11 پاسخ

مشکل ‌‌ Arrow function ها در Object ها

سلام.
چرا از Function معمولی وقتی تو object ها استفاده میکنیم و ازش خروجی میگیریم جواب میده ولی وقتی از Arrow function ها استفاده میکنیم undefined بر میگردونه؟!
ممنون میشم جواب بدین


ثبت پرسش جدید
میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

در کل مسئله ی مهم دقت درباره مقدار this هستش.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

برای تعریف توابع درون اشیا، بهتره از توابع پیکانی استفاده نشه.


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

سلام
لطفا منظورتون رو دقیق تر بفرمایید. مشخص نیست که منظورتون چیه.
یک مثال از موردی که مدنظرتون هستش رو بنویسید.


علیرضا
علیرضا
تخصص :فرانت اند وب
@sep286 سال پیشمطرح شد
0

@saeidalaghehband
دقیقا !! منم همچین مشکلی دارم


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

@sep28
مثال بنویسید، چه مشکلی بوده؟


علیرضا
علیرضا
تخصص :فرانت اند وب
@sep286 سال پیشمطرح شد
0
    let obj=()=>{

    }

درود برشما.
ابجکت ها رو نمیتونیم به شکل بالا استفاده کنیم


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

اینکه شی (object) نیست، این تابع هستش. خب مشخصه این مورد نمیشه.


mahdi khanzadi
mahdi khanzadi
تخصص :Software engineer
@khanzadimahdi6 سال پیشمطرح شد
3

وقتی از arrow function استفاده میکنید کلمه کلیدی this به context کنونی اشاره میکنه یعنی به context جایی که اونجا ابجکت تعریف شده.
اما وقتی از function استفاده میکنید کلمه کلیدی this به جایی که فانکش اونجا اجرا میشه اشاره میکنه یعنی به خود ابجکت.
برای اینکه درک بهتری داشته باشید باید مفهموم context رو درک کنید.

در کل این رو بدونید که arrow functions هیچ وقت context کنونی رو تغییر نمیده اما در function با توجه به جایی که اجرا میکنیمش context متفاوت هست.


علیرضا
علیرضا
تخصص :فرانت اند وب
@sep286 سال پیشمطرح شد
0

@milad
خب میدونم . بعدا با استفاده از کلمه یthis ........... ک ارور میده


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

@khanzadimahdi
ممنون
برای من گویا نبودش، این context یعنی کجا؟ چجوری باید context رو تشخیص داد کجا میشه. نشونش چیه؟


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

اما وقتی از function استفاده میکنید کلمه کلیدی this به جایی که فانکش اونجا اجرا میشه اشاره میکنه یعنی به خود ابجکت.

اگر تابع (y) بعنوان ورودی تابع (x) باشه، در اینجا this ای که درون تابع y قرار میدیم به چه چیزی اشاره خواهد کرد؟


mahdi khanzadi
mahdi khanzadi
تخصص :Software engineer
@khanzadimahdi6 سال پیشمطرح شد
1

به مثال زیر دقت کنید ,خروجی ها رو کامنت گذاشتم:

function testMethod() {
    console.log('test method in window');
}

let objectOne = {
    run(callback) {
        callback();
    },
    testMethod() {
        console.log('test method in objectOne');
    }
};

let objectTwo = {
    bootstrap() {
        objectOne.run(() => { // test arrow function
            this.testMethod(); //runs test method in objectTwo
        });

        objectOne.run(function() { // test normal function
            this.testMethod(); //runs test method in window
        });
    },
    testMethod() {
        console.log('test method in objectTwo');
    }
};

objectTwo.bootstrap(); // init example

// output: 
// test method in objectTwo 
// test method in window

در توابع معمولی موقع اجرا جایی که تابع اجرا بشه یه this رو از حوزه دید خودش به عنوان context میگیره و انتقال میده اما در توابع arrrow مکانی که در اونجا تعریف شدن this رو مشخص میکنه


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

در کل مسئله ی مهم دقت درباره مقدار this هستش.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

برای تعریف توابع درون اشیا، بهتره از توابع پیکانی استفاده نشه.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام