سعید علاقه بند
5 سال پیش توسط سعید علاقه بند مطرح شد
11 پاسخ

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

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


ثبت پرسش جدید
میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


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

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


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

    }

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش آپدیت شد
3

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

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


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

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش آپدیت شد
0

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

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


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
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 رو مشخص میکنه


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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

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


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

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