parsa
4 سال پیش توسط parsa مطرح شد
8 پاسخ

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

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

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


ثبت پرسش جدید
mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 4 سال پیش مطرح شد
3

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

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

    roocket () { console.log('here');
        return 'roocket is good';
    }
}

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

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

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


parsa
@parsahaghighi 4 سال پیش مطرح شد
0

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


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 4 سال پیش مطرح شد
1

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

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

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

parsa
@parsahaghighi 4 سال پیش مطرح شد
1

@khanzadimahdi

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

TypeError: this[callback] is not a function

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


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

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


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 4 سال پیش مطرح شد
3

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

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

    roocket () { console.log('here');
        return 'roocket is good';
    }
}

parsa
@parsahaghighi 4 سال پیش مطرح شد
0

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


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

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

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

// خروجی: here

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

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