نمایش نتایج 1 تا 7 از 7

نام تاپیک: توابع و اشیا

  1. #1

    توابع و اشیا

    سلام،1- function literal ها دقیقا چه نوع داده ای هستند و چطور می توانند بی نام باشند و دریک متغیر ذخیره شوند؟

    2-اشیا در js و nodejs به چه صورت تعریف می شوند؟

    مثلا میگن توابع در nodejs(jsیا) آبجکت هستنددرصورتی که نه کلاسی درکار است و نه تعاریفی مانند دیگر زبان های شی گرا


    var person = function(name){
    this.name = name;
    }

    var someone = new person("someone")


    دراینجا person خود نقش یک آبجکت رو داره درحالیکه ما با دستور new از روی شی دوباره کپی می کنیم!

    3-کاری که یک تابع دراینجا انجام می دهد هم ارز همون کاری است که شی تابع برای ما انجام می دهد پس تفاوت این دو دقیقا چیست؟

    4-تفاوت تعریف یک کلاس(شی یا تابع) به صورت بالا با


    function person(name){
    this.name = name;
    }


    چیست؟به جای literal از نام تابع استفاده کردیم

    5-اگر برای function literal نامی بگذاریم نامش جه کاربردی دارد؟

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    1,889

    نقل قول: توابع و اشیا

    البته سوالاتتون ربطی به nodejs ندارن .
    اینا مبانی javascript هستن که البته زبانیه که نود ازش استفاده میکنه
    نود رو میتوین به چشم یک موتور یا در برگیرنده در نظر بگیری که دستورات js رو تبدیل میکنه به C++‎ که میتونن رو سرور ران بشن


    اشیا در js مثل زبان های دیگه کلاس بیس نیستن در نتیجه شما کلاسی نمیبینی و کانسپت کلاس رو نداره که ساختار شی از قبل توش تعریف شده باشه
    اشیا در js یه سری کلید و مقدار هستن که به هم ربط داده میشن
    شما میتونی یک شی رو به صورت داینامیک بسازی

    var obj = {};
    obj.key = 'val' ;





    خیلی وقتا از توابع برای ساخت و پرکردن شی استفاده میشه (Constructor )


    function createObject(val){

    var obj = {} ;
    obj.key = val ;
    return obj ;

    }

    createObject('something');



    در نتیجه یه شوتر کات یا کد ساده شده براش ساخته شده



    function createObject(val){
    obj.key = val ;
    }

    var obj = new createObject('something');




    در واقع وقتی شما از کلید new استفاده میکنی برای صدا کردن یک تابع داری میگی که این تابع برای ساخت و پر کردن مقادیر یک آبجکت هستش در نتیجه توی تابع نیاز نیست دیگه اون دو خط اول و آخر رو بنویسی و خودش ترتیب اونا رو میده
    منظور از دو خط اینا هستن

    var obj = {} ; 
    return obj ;


    اینجا کلمه new معنا و مفهومی که توی زبان های دیگه داره رو نداره و با اون ذهنیت بهش نباید نگاه بکنی

    و البته ما اینجا از نام obj استفاده کردیم
    برای آبجکتمون د راین حالت باید از this بجاش استفاده کنیم یعنی اینجوری میشه

    function createObject(val){
    this.key = val ;
    }

    var obj = new createObject('something');




    یه فیلم آموزشی خیلی خوب هست که قسمت های عجیبش رو توضیح داده

    https://downloadly.ir/elearning/vide...e-weird-parts/

    دانلود کن ببین خیلی چیزا دستت میاد

    همچنین یه فیلم تو یوتوب هست که توابع و شی گرایی رو توضیح داده


    https://www.youtube.com/watch?v=fBpP...dn0c_u&index=1

  3. #3
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    1,889

    نقل قول: توابع و اشیا

    البته سوالاتتون ربطی به nodejs ندارن .
    اینا مبانی javascript هستن که البته زبانیه که نود ازش استفاده میکنه
    نود رو میتوین به چشم یک موتور یا در برگیرنده در نظر بگیری که دستورات js رو تبدیل میکنه به C++‎‎‎ که میتونن رو سرور ران بشن


    اشیا در js مثل زبان های دیگه کلاس بیس نیستن در نتیجه شما کلاسی نمیبینی و کانسپت کلاس رو نداره که ساختار شی از قبل توش تعریف شده باشه
    اشیا در js یه سری کلید و مقدار هستن که به هم ربط داده میشن
    شما میتونی یک شی رو به صورت داینامیک بسازی

    var obj = {};
    obj.key = 'val' ;





    خیلی وقتا از توابع برای ساخت و پرکردن شی استفاده میشه (Constructor )


    function createObject(val){

    var obj = {} ;
    obj.key = val ;
    return obj ;

    }

    createObject('something');



    در نتیجه یه شورت کات یا کد ساده شده براش ساخته شده



    function createObject(val){
    obj.key = val ;
    }

    var obj = new createObject('something');




    در واقع وقتی شما از کلید new استفاده میکنی برای صدا کردن یک تابع داری میگی که این تابع برای ساخت و پر کردن مقادیر یک آبجکت هستش در نتیجه توی تابع نیاز نیست دیگه اون دو خط اول و آخر رو بنویسی و خودش ترتیب اونا رو میده
    منظور از دو خط اینا هستن

    var obj = {} ; 
    return obj ;


    اینجا کلمه new معنا و مفهومی که توی زبان های دیگه داره رو نداره و با اون ذهنیت بهش نباید نگاه بکنی

    و البته ما اینجا از نام obj استفاده کردیم
    برای آبجکتمون د راین حالت باید از this بجاش استفاده کنیم یعنی اینجوری میشه

    function createObject(val){
    this.key = val ;
    }

    var obj = new createObject('something');




    یه فیلم آموزشی خیلی خوب هست که قسمت های عجیبش رو توضیح داده

    https://downloadly.ir/elearning/vide...e-weird-parts/

    دانلود کن ببین خیلی چیزا دستت میاد

    همچنین یه فیلم تو یوتوب هست که توابع و شی گرایی رو توضیح داده


    https://www.youtube.com/watch?v=fBpP...dn0c_u&index=1

  4. #4
    کاربر دائمی آواتار cybercoder
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    root/
    پست
    2,002

    نقل قول: توابع و اشیا

    به توضیحات plagueعزیز باید این نکات رو اضافه کنم که: ۱- توابع در جاوااسکریپت مقادیرند ۲- کلاس در ES قابل تعریف است ۳- وقتی متدها را زیرمجموعه تابع دیگری می کنید می تواند هم constructor function باشد هم factory function . در نگاه اول فکتوری فانکشن ها و کلاس ها یکسان اند. اما دو تفاوت عمده ( شاید بیشتر هم باشد) که من میشناسم این است که ۱: پرفورمنس کلاس اندکی بیشتر است. ۲- در متدهای کلاس می توان به آسانی از decorator ها استفاده کرد اما در فکتوری فانکشن ها یک مقداری پیچیده هست پیاده کردنش.

    موفق باشید.


  5. #5
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    1,889

    نقل قول: توابع و اشیا

    نقل قول نوشته شده توسط cybercoder مشاهده تاپیک
    به توضیحات plagueعزیز باید این نکات رو اضافه کنم که: ۱- توابع در جاوااسکریپت مقادیرند ۲- کلاس در ES قابل تعریف است ۳- وقتی متدها را زیرمجموعه تابع دیگری می کنید می تواند هم constructor function باشد هم factory function . در نگاه اول فکتوری فانکشن ها و کلاس ها یکسان اند. اما دو تفاوت عمده ( شاید بیشتر هم باشد) که من میشناسم این است که ۱: پرفورمنس کلاس اندکی بیشتر است. ۲- در متدهای کلاس می توان به آسانی از decorator ها استفاده کرد اما در فکتوری فانکشن ها یک مقداری پیچیده هست پیاده کردنش.

    موفق باشید.

    البته شما استاد هستید و من تخصصم js نیست
    ولی فکر میکنم اون کلاسی که تو ES اومده هم یجورایی شورت کات (یا حالا هرچی اسمش رو بشه گزاشت ) باشه و عملا پشت پرده همون مکانیزم قبل رو داره

  6. #6
    کاربر دائمی آواتار cybercoder
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    root/
    پست
    2,002

    نقل قول: توابع و اشیا

    نقل قول نوشته شده توسط plague مشاهده تاپیک
    البته شما استاد هستید و من تخصصم js نیست
    ولی فکر میکنم اون کلاسی که تو ES اومده هم یجورایی شورت کات (یا حالا هرچی اسمش رو بشه گزاشت ) باشه و عملا پشت پرده همون مکانیزم قبل رو داره
    در مورد ترنسپایلرها نظیر babel فرمایش شما کاملا صحیح هست منتها هم chrome و هم nodejs نسخه های جدید مستقیماْ پشتیبانی می کنند از این feature ها تا حدود زیادی.

  7. #7

    نقل قول: توابع و اشیا

    nodejs پیاده سازی زبان JavaScript برای برنامه نویسی Backend هست.

    شاید پیچیدگی مساله برای شما در این هست که توابع از نوع object هستند و در عین حال توابع برای ساختن objectهای دیگر هم استفاده می شود.

    توابع objectهایی هستند می توانند صدا زده شوند. مانند

    foo(str) {
    this.name = str
    }

    چون foo یک object هست پس می تونیم روی آن property تعریف کنیم:


    foo.version = 1.2;
    console.log(foo.version) // 1.2

    حالا بیایم و تابع رو صدا بزنیم:

    foo('sam')



    در این صدا زدن this به هر objectای که اشاره کند (می تونه this به هر چیزی در این لحظه اشاره کنه) اون object یک property با اسم name و مقدار ۱.۲ می گیرد و undefined برمی گرداند.

    حالا بیایم و این تابع را با keyword new صدا بزنیم:

    var f = new foo('sam');

    در این حالت قبل از اجرای کد داخل تابع موتور JavaScript (که در سوال شما nodejs) هست یک object خالی می سازد و آدرس آن را در this نگه می دارد. بعد از این مراحل کد درون تابع اجرا می شود و به آن object خالی property با نام name و مقدار 'sam' داده می شود و در نهایت آدرس آن object برگردانده می شود.

    اگر تجربه برنامه نویسی با یک زبان شیی گرا را دارین و می خوایید متوجه شوید در JavaScript چگونه می تونید اون مفاهیم رو پیاده کنید می تونید به لینک JavaScript Class - DashBrace مراجعه کنید.
    آخرین ویرایش به وسیله thegoodeveloper : شنبه 13 مهر 1398 در 12:33 عصر


تاپیک های مشابه

  1. سوال: خروجی توابع جاوا اسکریپت (توابع تودرتو)
    نوشته شده توسط abpsoft در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 6
    آخرین پست: یک شنبه 15 خرداد 1390, 15:51 عصر
  2. سوال: چگونه می توان وقتی focusروی texboxقرار می گیردبتوان فارسی تایپ کرد
    نوشته شده توسط assimar42 در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 5
    آخرین پست: جمعه 29 بهمن 1389, 22:49 عصر
  3. چگونه مي توان محتواي يك فيلد جدول را با توجه به اطلاعات وارده در تكس باكس روي يك ليبل نشان دهد؟
    نوشته شده توسط reshehri در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 1
    آخرین پست: یک شنبه 10 بهمن 1389, 17:19 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •