سلام.
چرا از Function معمولی وقتی تو object ها استفاده میکنیم و ازش خروجی میگیریم جواب میده ولی وقتی از Arrow function ها استفاده میکنیم undefined بر میگردونه؟!
ممنون میشم جواب بدین
در کل مسئله ی مهم دقت درباره مقدار this هستش.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
برای تعریف توابع درون اشیا، بهتره از توابع پیکانی استفاده نشه.
سلام
لطفا منظورتون رو دقیق تر بفرمایید. مشخص نیست که منظورتون چیه.
یک مثال از موردی که مدنظرتون هستش رو بنویسید.
وقتی از arrow function استفاده میکنید کلمه کلیدی this به context کنونی اشاره میکنه یعنی به context جایی که اونجا ابجکت تعریف شده.
اما وقتی از function استفاده میکنید کلمه کلیدی this به جایی که فانکش اونجا اجرا میشه اشاره میکنه یعنی به خود ابجکت.
برای اینکه درک بهتری داشته باشید باید مفهموم context رو درک کنید.
در کل این رو بدونید که arrow functions هیچ وقت context کنونی رو تغییر نمیده اما در function با توجه به جایی که اجرا میکنیمش context متفاوت هست.
@khanzadimahdi
ممنون
برای من گویا نبودش، این context یعنی کجا؟ چجوری باید context رو تشخیص داد کجا میشه. نشونش چیه؟
اما وقتی از function استفاده میکنید کلمه کلیدی this به جایی که فانکش اونجا اجرا میشه اشاره میکنه یعنی به خود ابجکت.
اگر تابع (y) بعنوان ورودی تابع (x) باشه، در اینجا this ای که درون تابع y قرار میدیم به چه چیزی اشاره خواهد کرد؟
به مثال زیر دقت کنید ,خروجی ها رو کامنت گذاشتم:
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 رو مشخص میکنه
در کل مسئله ی مهم دقت درباره مقدار this هستش.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
برای تعریف توابع درون اشیا، بهتره از توابع پیکانی استفاده نشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟