راکت
حل شده

فراخوانی فانکشن در loop با جاوااسکریپت

8 پاسخ

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

class Test {
    static name (names) {
        for (let callback of names) {
            this.callback();
        }
    }

    roocket () {
        return 'roocket is good';
    }
}

حالا به شکل زیر فرخوانی میکنم

Test.name(['roocket']);

ولی یه مشکل وجود داره که کلاس تو متد name به this.name() گیر میده و به اررور میخوریم تو php میایم اینکارو میکنیم

public function name ($names) {
    foreach ($names as $name ) {
        $this->$name();
    }
}

یعنی بعد this به همراه متغییر $ رو هم مینویسیم دیگه کد بدرستی اجرا میشه ولی تو جاوا اسکریپت گیر کردم

ممنون میشم راهنمایی بفرمایید

@hesammousavi

ثبت پرسش جدید

پاسخ‌ها

8
mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

بهترین پاسخ

ببین مشکل اینه که عضو استاتیک توی هیچ زبان برنامه نویسی نمیتونه به عضو غیر استاتیک دسترسی داشته باشه. کد رو به صورت زیر بنویس حل میشه مشکلت:

class Test {
    name (names) {
        for (let callback  of names) {
            this[callback]();
        }
    }

    roocket () { console.log('here');
        return 'roocket is good';
    }
}
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

قراره این تابع چیکار کنه؟

کد داره بدرستی اجرا میشه، مشکلش اینه که داخل حلقه تابع name ورودی نداره، بعدش وقتی بصورت تودرتو صداش میزنی، چون ورودی نداره گیر میفته.

parsa
parsa
@parsahaghighi

@milad
سلام
ببینید وقتی تابع name در کلاس Test رو فراخوانی کردیم بهش ورودی آرایه دادیم که داخلش نوشتیم roocket حالا تو تابع name به وسیله ورودی یه تابع که به اسم roocket هست رو فراخوانی میکنیم

شاید پاسخ شما همین‌جا باشد

mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

باید به صورت زیر کد رو بنویسی :

class Test {
    static name (names) {
        for (let callback of names) {
            this[callback]();
        }
    }

    roocket () {
        return 'roocket is good';
    }
}
parsa
parsa
@parsahaghighi

@khanzadimahdi

سلام اررور میده

TypeError: this[callback] is not a function

مشکلش اینجاس که مقدار callback رو جایگذاری نمیکنه یعنی باید به جای callback بنویسه roocket که تابع راکت اجرا شه

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

من راه حلی پیدا نکردم.
این رو ببین شاید کمکی کنه: https://stackoverflow.com/questions/3592468/can-i-store-javascript-functions-in-arrays

parsa
parsa
@parsahaghighi

@khanzadimahdi
ایول دمت گرم حق با شما بود اصلا یادم رفته بود به متد های دیگه static بدم 👍👍

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

سپاس مهندس @khanzadimahdi، داره کار میکنه:

var t = new Test();
t.name(['roocket']);

// خروجی: here

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

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