چه تفاوتی بین with, run, let, apply, also است؟
اصلا چرا Scope function؟
یه زمانایی هست که میخوایم یک تعدادی از متد ها رو روی یک object فراخوانی کنیم. کاری که معمولا انجام میدیم اینه که بیایم به ازای هر متد اسم آبجکت رو بیاریم و روی اون کال کنیم
راه ساده ترش استفاده از scope function هاست.
هر جا لازم بود خود آبجکتی که دارید این متد هارو روش کال میکنید، به عنوان ریزالت برگردونید از apply , also استفاده کنید اگر از also استفاده میکنید داخل بلاک، بجای آبجکتتون از it استفاده کنید اگر از apply استفاده میکنید داخل بلاک، this بکار ببرید (این this رو هم میشه ننوشت)
اگر نیاز نبود خود آبجکت return شه، برید سراغ with, run, let
اگر extension function میخواستید: run (مثل apply داخلش از this استفاده کنید) , let (مثل also از it )
اگر نه run , with
(فرق این دو تا run تو اینه که اولی روی آبجکت کال میشه (T.run) دومی خودش به تنهایی)