سلام دوستان کد زیر رو مشاهده بفرمایید
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 به همراه متغییر $ رو هم مینویسیم دیگه کد بدرستی اجرا میشه ولی تو جاوا اسکریپت گیر کردم
ممنون میشم راهنمایی بفرمایید
ببین مشکل اینه که عضو استاتیک توی هیچ زبان برنامه نویسی نمیتونه به عضو غیر استاتیک دسترسی داشته باشه. کد رو به صورت زیر بنویس حل میشه مشکلت:
class Test {
name (names) {
for (let callback of names) {
this[callback]();
}
}
roocket () { console.log('here');
return 'roocket is good';
}
}
قراره این تابع چیکار کنه؟
کد داره بدرستی اجرا میشه، مشکلش اینه که داخل حلقه تابع name ورودی نداره، بعدش وقتی بصورت تودرتو صداش میزنی، چون ورودی نداره گیر میفته.
@milad
سلام
ببینید وقتی تابع name در کلاس Test رو فراخوانی کردیم بهش ورودی آرایه دادیم که داخلش نوشتیم roocket حالا تو تابع name به وسیله ورودی یه تابع که به اسم roocket هست رو فراخوانی میکنیم
باید به صورت زیر کد رو بنویسی :
class Test {
static name (names) {
for (let callback of names) {
this[callback]();
}
}
roocket () {
return 'roocket is good';
}
}
سلام اررور میده
TypeError: this[callback] is not a function
مشکلش اینجاس که مقدار callback رو جایگذاری نمیکنه یعنی باید به جای callback بنویسه roocket که تابع راکت اجرا شه
من راه حلی پیدا نکردم.
این رو ببین شاید کمکی کنه: https://stackoverflow.com/questions/3592468/can-i-store-javascript-functions-in-arrays
ببین مشکل اینه که عضو استاتیک توی هیچ زبان برنامه نویسی نمیتونه به عضو غیر استاتیک دسترسی داشته باشه. کد رو به صورت زیر بنویس حل میشه مشکلت:
class Test {
name (names) {
for (let callback of names) {
this[callback]();
}
}
roocket () { console.log('here');
return 'roocket is good';
}
}
@khanzadimahdi
ایول دمت گرم حق با شما بود اصلا یادم رفته بود به متد های دیگه static بدم 👍👍
سپاس مهندس @khanzadimahdi، داره کار میکنه:
var t = new Test();
t.name(['roocket']);
// خروجی: here
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟