به نام خدا با عرض سلام و احترام خدمت شما دوستان عزیز.در ادامه آموزش جاوا اسکریت این جلسه قصد داریم به مبحث متدهای قرض گرفتن در جاوا اسکریپت بپردازیم.با ما همراه باشید.
متدهای قرض گرفتن از اشیا
در جاوا اسکریپت، میتوانید متدهایی را از اشیاء دیگر قرض بگیرید تا برخی عملکردها را بدون به ارث بردن تمام ویژگیها و متدهای آنها بسازید.
جاوا اسکریپت دو متد()
call و ()
apply را برای تمام اشیاء تابع ارائه می دهد که به یک تابع اجازه فراخوانی می دهد که گویی متد شی دیگری است.به عنوان مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var objA = { name: "object A", say: function(greet) { alert(greet + ", " + this.name); } } objA.say("Hi"); // Displays: Hi, object A var objB = { name: "object B" } /* The objB doesn't have say() method, but it can borrow it from objA */ objA.say.call(objB, "Hello"); // Displays: Hello, object B |
تفاوت بین متدهای ()
call و ()
apply
()
apply تقریباً با ()
call یکسان است، تنها تفاوت انها این است که متد ()
call شامل لیستی از آرگومان ها مانند call(thisObj, arg1, arg2, ...)
, میباشد، در حالی که متد()
apply یک آرایه واحد از آرگومان ها مانند apply(thisObj, [argsArray])
را می گیرد.به کروشه های مربع ([]
)، که نشان دهنده یک آرایه است، در آخرین خط مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var objA = { name: "object A", say: function(greet) { alert(greet + ", " + this.name); } } objA.say("Hi"); // Displays: Hi, object A var objB = { name: "object B" } /* The objB doesn't have say() method, but it can borrow it from objA */ objA.say.apply(objB, ["Hello"]); // Displays: Hello, object B |
استفاده ازمتدهای داخلی
متد ()
apply همچنین به شما امکان می دهد از متدهای داخلی برای انجام سریع و آسان برخی از تسک ها استفاده نمایید.یکی از این مثالها استفاده از ()Math.max()
/Math.min
برای یافتن مقدار ماکزیمم یا مینیمم در آرایه است که در صورت نبود این متدها نیاز به حلقه زدن روی مقادیر آرایه میباشد.
همانطور که از جلسه های قبل می دانید آرایه های جاوا اسکریپت متد ()
max ندارند.اما Math دارد، بنابراین میتوانیم متد ()Math.max
را مانند زیر اعمال نماییم:
1 2 3 4 5 |
var numbers = [2, 5, 6, 4, 3, 7]; // Using Math.max apply var max = Math.max.apply(null, numbers); alert(max); // Outputs: 7 |
نکته: اولین آرگومان برای ()
call و ()
apply شیئی است که تابع باید روی آن فراخوانی شود. استفاده از null به عنوان اولین آرگومان مانند فراخوانی تابع بدون ارائه هیچ شیئی برای این اشاره گر در داخل تابع است.
عملگر جدید ES6بنام spread operator راه کوتاه تری را برای به دست آوردن ماکزیمم یا مینیمم مقدار از یک آرایه بدون استفاده از متد()
apply ارائه میدهد به عنوان مثال:
1 2 3 4 5 |
var numbers = [2, 5, 6, 4, 3, 7]; // Using spread operator var max = Math.max(...numbers); alert(max); // Outputs: 7 |
گرچه هر دو (...
)spread و ()
apply اگر تعداد عناصر آرایه بیش از حد باشد یا ناموفق خواهند بود یا نتیجه نادرست را برمی گرداننددر این صورت شما میتوانید از ()
Array.reduce برای یافتن حداکثر یا حداقل مقدار در یک آرایه عددی با مقایسه هر مقدار مانند زیر استفاده کنید:
1 2 3 4 5 6 7 |
var numbers = [2, 5, 6, 4, 3, 7]; // Using reduce method var max = numbers.reduce(function(a, b) { return Math.max(a, b); }); alert(max); // Outputs: 7 |
خب دوستان گرامی به پایان جلسه متدهای قرض گرفتن در جاوا اسکریپت رسیدیم امیدواریم مورد توجه شما قرار گیرد.
سایرمقالات:
Event Propagation در جاوا اسکریپت
Event Listener در جاوا اسکریپت
دیدگاهتان را بنویسید