شیء Math
این شیء از پیش ساخته شده برای انجام محاسبات عددی استفاده میشود. همچنین این شیء دارای چندین متد است که در ادامه به آنها اشاره میکنیم.
متدهای ()min. و ()max.
همانطور از نام این دو متد مشخص است، از این توابع برای یافتن مقدار کوچک و بزرگ در بین اعداد استفاده میشود. این دو متد هرچند تا که بخواهند مقدار میپذیرند. از این متدها به راحتی میتوان بزرگترین و کوچکترین مقدار را بدون نوشتن برنامه اضافی پیدا کرد. برای مثال به تکه کد زیر توجه کنید:
var nMax = Math.max(3,100,54,99,101); var nMin = Math.min(3,100,54,99,101); alert(nMax); alert(nMin); //result 101 //result 3
متد ()abs.
از این متد برای پیدا کردن قدر مطلق عدد استفاده کرد. (قدر مطلق یک عدد همیشه عددی غیرمنفی است). به مثال زیر توجه کنید:
var nNumber = Math.abs(-45); alert(nMax); //result 45
متدهای ()ceil. و ()floor. و ()round. و ()trunc.
از این متدها برای گرد کردن اعداد اعشاری استفاده میشود. برای درک بهتر، به مقداری توضیح مربوط به هرکدام از این متدها اشاره میکنیم:
- متد ()ceil : این متد بدون درنظر گرفتن بخش اعشاری عدد، آن را به بزرگترین ترین عدد نزدیک خودش گرد میکند.
- متد ()floor : این متد بدون درنظر گرفتن بخش اعشاری عدد، آن را به کوچکترین عدد نزدیک خودش گرد میکند.
- متد ()round : این متد نیز همانند قوانین ریاضی با توجه به بخش اعشاری عدد، گرد میکند. درصورتی که اگر قسمت اعشاری عدد مساوی یا بیشتر از نصف باشد به عدد بزرگتر و در صورتی که از نصف کمتر باشد به عدد کوچکتر گرد میکند.
- متد ()trunc : این متد تنها قسمت صحیح عدد اعشاری را برمیگرداند.
به مثال های زیر توجه کنید:
alert(Math.ceil(31.5)); alert(Math.floor(31.5)); alert(Math.round(31.5)); alert(Math.round(31.4)); alert(Math.trunc(31.9)); //result 32 //result 31 //result 32 //result 31 //result 31
متدهای ()pow. و ()sqrt.
با این دو متد نام برده میتوان در مورد مقادیر توانی کار کرد.
- متد ()pow : این متد برای محاسبه کرد توان یک عدد استفاده میشود. این متد دو مقدار میگیرد که مقدار اول پایه و مقدار دوم توان خواهد بود. مثال:
alert(Math.pow(2,10)); //result 1024
- متد ()sqrt : این متد جذر یک عدد را به دست میآورد. برای مثال:
alert(Math.sqrt(225)); //result 15
متد ()random.
یکی از پرکاربردترین متدهایی که در جاوا اسکریپت استفاده میشود متد ()random. است که کار این متد ایجاد اعداد تصادفی در بین دو محدوده است. برای این کار از یک فرمول استفاده میشود.
در این فرمول، متد ()random. دو مقدار میگیرد و یک عدد تصادفی بین آن دو مقدار برمیگرداند. البته که خود آن دو عدد حساب نمیشوند. مقدار اولی که متد میگیرد باید عدد بزرگتر باشد که درواقع پایان محدوده اعداد تصادفی را تعیین میکند و مقدار دومی که میگیرد باید عددی کوچکتر و درواقع شروع محدوده خواهد بود. شکل کلی این متد به صورت زیر است :
var nRandom = Math.random() * last_value + first_value; alert(nRandom);
برای مثال:
var nRandom = Math.random() * 20 + 1; alert(nRandom); //result a random number from 1 to 20
اما دقت کنید که در این صورت، این متد یک عدد اعشاری به شما برمیگرداند. بنابراین تنها کاری که باید بکنید این است که یکی از متدهای گرد کردن را به فرمول اضافه کنید. به این صورت :
var nRandom = Math.floor(Math.random() * 20 + 1); alert(nRandom); //result a random number from 1 to 20
متد ()sin. و ()cos.
همانطور که از نام این دو پیداست، متد ()sin. سینوس یک عدد و متد ()cos. کوسینوس یک عدد را برمیگرداند. عددی که به متد داده میشود بر حسب رادیان خواهد بود. درصورتی که بخواهید عدد را برحسب درجه وارد کنید ابتدا باید عدد خود را در π (عدد پی) ضرب کنید و سپس بر ۱۸۰ تقسیم کنید. به تکه زیر توجه کنید:
Math.sin(90 * Math.PI / 180); Math.cos(0 * Math.PI / 180); //result 1 //result 1
متدهای ثابت در شیء Math
همانطور که گفتیم شیء Math از اشیای درونی در جاوا اسکریپت میباشد. این شیء چند متد ثابت نیز دارد که درواقع خروجی این متدها همیشه یکسان است. در ادامه به چند مورد از این متدهای ثابت اشاره میکنیم:
متدهای ()decodeURI. و ()decodeURIComponent.
ممکن است شما هم در صفحات اینترنتی دیده باشید که یک آدرس اینترنتی دارای کارکترهای نامعبتر و ناخوانا بوده و نتوانستید آدرس را بفهمید. در این صورت باید آدرس اینترنی را decode کنید تا برای شما قابل فهم باشد.
برای استفاده از این قابلیت در جاوا اسکریپت آدرسی که میخواهید decode شود به متد میدهید و ()decodeURI. یا ()decodeURIComponent. این کار را به سادگی برایتان انجام خواهد داد. این دو متد از دیگر اشیای درونی در جاوا اسکریپت میباشند. برای درک بهتر به مثال زیر توجه کنید:
var sUri = "https://programstore.ir/category/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa"; alert(decodeURI(sUri)); alert(decodeURIComponent(sUri)); //result https://programstore.ir/category/آموزش-برنامه-نویسی/جاوا-اسکریپت
در کد بالا یک آدرس اینترنتی (که دارای کاراکترهای نامفهوم است) به متد داده شده و متدهای ()decodeURI. یا ()decodeURIComponent. آدرس را به یک آدرس قابل فهم و خوانا تبدیل کرده است.
برعکس درصورتی که بخواهید یک آدرس اینترنتی را encode کنید از دو متد ()encodeURI. و ()encodeURIComponent. استفاده میشود. بدین صورت که یک آدرس اینترنتی خوانا را به این متد میدهید و متد یک آدرس رمزگذاری شده برمیگرداند. برای مثال به تکه کد زیر توجه کنید:
var sUri = "https://programstore.ir/category/آموزش-برنامه-نویسی/جاوا-اسکریپت"; alert(encodeURI(sUri)); alert(encodeURIComponent(sUri)); //result https://programstore.ir/category/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C/%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA //result https%3A%2F%2Fprogramstore.ir%2Fcategory%2F%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C%2F%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA
تفاوت دو متد ()encodeURI. و ()encodeURIComponent. در این است که متد ()encodeURI. کاراکترهای خاص نظیر @ : # $ . & , / را encode نمیکند اما متد ()encodeURIComponent. حتی این کاراکترها را نیز رمزگذاری میکند.
برای مثال به تکه کد زیر توجه کنید:
var sUri = "https://programstore.ir@#$&,"; alert(encodeURI(sUri)); alert(encodeURIComponent(sUri)); //result https://programstore.ir@#$&, //result https%3A%2F%2Fprogramstore.ir%40%23%24%26%2C
متد ()eval.
این متد نیز از دیگر اشیای درونی در جاوا اسکریپت میباشد که بسیار قدرتمند و پرکاربرد است. این متد یک مقدار از نوع رشته میگیرد و آن را ارزیابی یا اجرا میکند. این متد شبیه مفسر جاوا اسکریپت عمل میکند. برای درک بهتر این متد به تکه کد زیر توجه کنید:
var x = 5; var y = 10; var a = eval("x * y") var b = eval("2 + 2") var c = eval("x + 13") var res = a + b + c; alert(a); alert(b); alert(c); alert(res); //result 50 //result 4 //result 18 //result 72
همانطور که میبینید در متد ()eval. برخلاف این که عملیات ریاضی داخل کوتیشن مارک (“”) نوشته شده است با این حال این متد ابتدا برنامه را ارزیابی کرده و سپس عملیات ریاضی را انجام داده است. درصورتی که بدون این متد این عبارات یک رشته به حساب آماده و خود محتوا را چاپ خواهد کرد. این متد در رابطه با مقادیر رشته ای بسیار پرکاربرد است.
شیء ()Date
در ادامه آموزش اشیای درونی در جاوا اسکریپت با ما همراه باشید. کار با تاریخ و زمان در جاوا اسکریپت با شیء Date امکان پذیر است. این یکی از قابلیت های جاوا اسکریپت است که اطلاعات را از سیستم کاربر جمع میکند و در صفحات مختلف وب نمایش میدهد. از آن جایی که صفحات وب با HTML نوشته شدهاند، بنابراین این کار بابد در HTML صورت پذیرد.
اما این کار به تنهایی در HTML امکان پذیر نیست و باید از زبان های تحت وب نظیر جاوا اسکریپت کمک بگیرید. به کمک شیء ()Date میتوانید زمان و تاریخ سیستم کاربر را زمانی که کد اجرا شود دریافت کنیم. حال این اطلاعات را میتوان در یک متغیر ذخیره کرد یا آن را در صفحات وب نمایش داد.
برای آشنایی با زبان جاوا اسکریپت میتوانید به فایل موجود در لینک زیر نگاهی بیندازید.
به طور کلی ایجاد شیء جدید از نوع ()Date به صورت زیر است:
var d = new Date(); alert(d);
با اجرای کد بالا تاریخ و زمان کنونی برای کاربر نماش داده میشود.
شیء ()Date قابلیتی دارد که میتواند زمانی که از ساعت ۱۲:۰۰:۰۰ روز ۱۹۷۰/۰۱/۰۱ تا زمان کنونی در خود ذخیره کند. این زمان به صورت هزارم ثانیه (میلی ثانیه) ذخیره میشود. برای برگرداندن این مقدار از یک متد به نام ()valueOf. استفاده میشود. برای مثال تکه کد زیر تعداد هزارم ثانیه های گذشته از تاریخ یک ژانویه ۱۹۷۰ تا به امروز را چاپ میکند:
var d = new Date(); alert(d.valueOf()); // یا document.write(d.valueOf());
مطمئناً این پاسخ هیچ وقت ثابت نخواهد بود. حتی با یک رفرش سریع این مقدار تغییر میکند.
یکی دیگر از قابلیت های شیء ()Date این است که شما میتوانید یک زمان از نوع هزارم ثانیه وارد کنید و سپس این شیء آن زمان را با تاریخ یک ژانویه ۱۹۷۰ جمع میکند. درواقع این متد به شما میتواند بگوید که پس از گذشتن x هزارم ثانیه از ۱۹۷۰/۰۱/۰۱ چه تاریخی بوده است.
برای مثال به تکه کد زیر توجه کنید:
var d = new Date(100000000000); alert(d); //result Sun Sep 09 2001 06:16:40
همانطور که میبینید در این کد پس از گذشتن ۱ تریلیون هزارم ثانیه از تاریخ ۱۹۷۰/۰۱/۰۱، تاریخ یکشنبه ۹ سپتامبر ۲۰۰۱ و ساعت ۰۶:۱۶:۴۰ بوده است.
حتی شما میتوانید با استفاده از این متد زمان های گذشته از این تاریخ را به دست آورید برای این کار تنها کافیست عدد وارد شده را به صورت منفی وارد کنید.
نکته : هر یک روز (۲۴ ساعت) برابر با ۸۶۴۰۰۰۰۰ هزارم ثانیه است.
دیگر توابع مربوط به تاریخ و زمان
شیء ()Date دارای متدهای دیگری نیز است که تاریخ یا زمان خاصی را برمیگرداند. در جدول زیر به برخی از این متد ها به همراه توضیحات آن اشاره شده است.
نحوه استفاده از این متد ها را با مثال زیر ملاحضه میکنید:
var d = new Date(); var year = d.getFullYear(); alert(year); //result 2021
نکته ۱: در متد ()getDay ترتیب متفاوت است. عدد ۰ به معنی یکشنبه، عدد ۱ به معنی دوشبیه و ادامه به همین صورت میباشد.
نکته۲: در متد ()getTimezoneOffset خروجی ۲۱۰- خواهد بود. این مقدار به دلیل اختلاف ۳:۱۰ دقیقه ای ساعت تهران به نسبت زمان واحد جهانی است.
var d = new Date(); var diff = d.getTimezoneOffset(); alert(diff); //result -210
سخن آخر آموزش جاوا اسکریپت
در این پست از آموزش های پیاستور در رابطه با اشیای درونی در جاوا اسکریپت صحبت کردیم. این شیء ها در جاوا اسکریپت بسیار پرکاربرد هستند و درمواقع خاص به کمک برنامه نویس میآیند. در این پست یاد گرفتیم که با استفاده از تابع های مختلف عملیات ریاضی را تنها با چند کلیک انجام دهیم.
همچنین در رابطه کار با تاریخ و زمان صحبت کردیم که از مباحث بسیار شیرین جاوا اسکریپت میباشد. افراد میتوانند با استفاده از این شیء ساعت های مختلف برای وبلاگ یا سایت خود طراحی و از آن استفاده کنند که به زیبایی هرچه بیشتر سایت منجر میشود.
شما میتوانید در ادامه مجموعه پست های آموزشی هرچه بیشتر در رابطه با جاوا اسکریپت یاد بگیرید. در پست بعدی در رابطه با مدل شیء گرای مرورگر صحبت خواهیم کرد. منتظر نظرات و پیشنهادات شما هستیم. موفق باشید.