اشیای درونی (پیش ساخته) در جاوا اسکریپت
جاوا اسکریپت شامل تعدادی اشیای از پیش ساخته است که توسعه دهندگان می توانند از آن ها در برنامه های خود استفاده کنند. در واقع کلاس هایی برای این اشیا نداریم و لازم نیست شی ای از روی آن ها ساخته شود.
اشیای از پیش ساخته شده جاوا اسکریپت (شی Math)
یکی از اشیای از پیش ساخته شده جاوا اسکریپت است که برای انجام محاسبات عددی و عملیات مربوط به ریاضیات استفاده می شود. این شی شامل یکسری خاصیت و متد است که انجام محاسبات را آسان می کند.
متدهای ()min و ()max
از این توابع برای پیداکردن کوچکترین و بزرگترین مقادیر از بین چند عدد استفاده می شود. این متد ها هر تعداد پارامتر را می توانند بپذیرند :
var iMax = Math.max(3, 54, 32, 16); alert(iMax); //outputs “۵۴” var iMin = Math.min(3, 54, 32, 16); alert(iMin); //outputs “۳”
این توابع برای جلوگیری از نوشتن برنامه های اضافی برای پیداکردن min و max اعداد می تواند استفاده شود.
یکی از متد ها ، ()abs است که قدر مطلق اعداد گرفته شده را بر می گرداند.
گروهی دیگر از متد ها که برای گرد کردن اعداد اعشاری به صحیح مورد استفاده قرار می گیرند. این توابع شامل ()ceil و ()floor و ()round هستند.
تابع ()round : این تابع عدد گرفته شده را به عدد صحیح بالاتر گرد می کند اگر قسمت اعشاری ا زنصف بیشتر یا مساوی باشد و در غیر این صورت آن را به عدد صحیح پایین تر گرد می کند.
تابع ()ceil : این تابع بدون در نظر گرفتن قسمت اعشاری آن را به کوچکترین عدد صحیح بعدی گرد می کند.
تابع () floor : این تابع بدون در نظر گرفتن قسمت اعشاری آن را به بزرگترین عدد صحیح قبلی گرد می کند.
به مثال های زیر توجه کنید:
alert(Math.ceil(25.5)); //outputs “۲۶” alert(Math.round(25.5)); //outputs “۲۶” alert(Math.floor(25.5)); //outputs “۲۵”
گروه دیگری از متد ها برای کار با مقادیر توانی وجود دارد:
()log : برای محاسبه لگاریتم طبیعی عدد گرفته شده به کار می رود.
()pow : برای محاسبه توان یک عدد به کار می رود که دو آرگومان می گیرد:
var iNum = Math.pow(2, 10);
()sqrt : جذر یک عدد را حساب می کند:
var iNum = Math.sqrt(4); alert(iNum); //outputs “۲”
شی Math شامل متد های زیر نیز می باشد:
acos(x) , asin(x) , atan(x) , atan2(x, y) , cos(x) , sin(x) , tan(x)
یکی دیگر از متد های مربوط به شی Math که کاربرد زیادی هم دارد ()random است که برای تولید اعداد تصادفی بین ۰و ۱ (البته نه خود ۰ و ۱) مورد استفاده قرار می گیرد.
البته برای تولید اعداد تصادفی در یک محدوده خاص از فرمول زیر استفاده می شود:
number = Math.floor(Math.random() * total_number_of_choices +first_possible_value)
به عنوان مثال یرای ایجاد مقادیر تصادفی بین ۱ و ۱۰ به صورت زیر عمل می شود:
var iNum = Math.floor(Math.random() * 10 + 1);
بهترین راه برای ایجاد مقادیر تصادفی استفاده از یک تابع است که به صورت زیر نوشته می شود:
function selectFrom(iFirstValue, iLastValue) { var iChoices = iLastValue – iFirstValue + 1; return Math.floor(Math.random() * iChoices + iFirstValue); } //select from between 2 and 10 var iNum = selectFrom(2, 10);
استفاده از این تابع برای انتخاب یک عنصر تصادفی از آرایه بسیار آسان است. برای مثال :
var aColors = [“red”, “green”, “blue”, “yellow”, “black”, “purple”, “brown”]; var sColor = aColors[selectFrom(0, aColors.length-1)];
در اینجا آرگومان دوم تابع ، طول آرایه منهای ۱ است که در واقع موقعیت آخرین عنصر می باشد.
اشیای جاوا اسکریپت : دیگر توابع مفید
از توابعی همچون ()encodeURI و ()encodeURIComponent برای کدگذاری آدرس های اینترنتی (URIها) استفاده می شود. در حالت کلی و صحیح یک آدرس نباید شامل کاراکترهای نامعتبر همچون space باشد. این توابع به شما در تبدیل کردن و encode کردن آدرس های اینترنتی نادرست و بی ارزش برای اینکه مرورگرها آنها را بفهمند استفاده می شود.
متد ()encodeURI معمولا برای آدرس های کامل (به عنوان مثال http://learningjquery.ir/illegal value.htm) مورد استفاده قرار می گیرد در حالی که دیگری برای قسمتی از آدرس ها همچون illegal value.htm مورد استفاده قرار می گیرد.
تفاوت اصلی بین این دو تابع این است که تابع اول کاراکتر های خاصی که به عنوان جزئی از آدرس هستند همچون (: ) ، / ، ؟ و… را encode نمی کند درحالی که تابع دوم تمام کاراکتر های غیر استاندارد را encode خواهد کرد. برای مثال:
var sUri = “http://www.wrox.com/illegal value.htm#start”; alert(encodeURI(sUri)); alert(encodeURIComponent(sUri));
حاصل اجرای کد بالا به صورت زیر خواهد شد:
http://www.wrox.com/illegal%20value.htm#start
http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
طبیعتا دو تابع برای decode کردن آدرس های اینترنتی استفاده می شود همچون:
decodeURI()
decodeURIComponent()
به عنوان مثال :
var sUri = “http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start”; alert(decodeURI(sUri)); alert(decodeURIComponent(sUri));
حاصل اجرای این کد به صورت زیر خواهد بود :
http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start
http://www.wrox.com/illegal value.htm#start
آخرین تابعی که به نظر قدرتمند می آید ()eval است. این تابع که شبیه به مفسر جاوا اسکریپت کار می کند آرگومانی از نوع رشته می گیرد که در واقع یک برنامه به زبان جاوا اسکریپت است و این تابع آن را همانند سایر برنامه ها اجرا می کند. برای مثال:
eval(“alert(‘hi’)”);
این تکه کد در حقیقت معادل دستور زیر است:
alert(“hi”);
موقعی که مفسر جاوا اسکریپت به این تابع می رسد آرگومان آن را به عنوان یک دستور خیلی ساده تفسیر کرده و اجرا می کند. این به این معنی است که شما می توانید از داخل آرگومان های این تابع به تمام متغیرهای خارج آن دسترسی داشته و از آن ها استفاده کنید :
var msg = “hello world”; eval(“alert(msg)”);
همچنین شما می توانید آرگومان تابع ()eval را یک تابع تعریف کرده و سپس آن را خارج از تایع ()eval صدا بزنید. برای مثال:
eval(“function sayHi() { alert(‘hi’); }”); sayHi();
کار با تاریخ و زمان در جاوا اسکریپت
یکی از قابلیت های جالب جاوا اسکریپت ، جمع آوری اطلاعات از سیستم کاربر و نمایش آنها در صفحات وب است. همانطور که می دانید HTML به تنهایی قادر به انجام چنین کاری نیست اما با کمک زبانهای دیگر تحت وب مانند Javascript ، می تواند تا حدودی این مشکل را برطرف کند. شئ هایی در جاوا اسکریپت وجود دارند که توسط متدهای مختلف، اطلاعات مورد نیاز را از سیستم گرفته و در اختیار کاربران قرار می دهند. یکی از این اشیاء ، Date می باشد که به کمک آن می توانیم تاریخ و زمان سیستم را هنگام اجرای کد دریافت کنیم، سپس آنرا نمایش دهیم و یا اینکه در یک متغیر ذخیره کنیم تا در صورت لزوم از آن بهره گیریم. برای ایجاد شی ای از این نوع می توان به شکل زیر عمل کرد:
var d = new Date();
شی ()Date تعداد هزارم ثانیه های گذشته از ساعت ۱۲:۰۰:۰۰ روز ۱۹۷۰/۰۱/۰۱ تا زمان و تاریخ کنونی را در خود نگه داری می کند. این شی دارای متدی به نام ()valueOf می باشد که این مقدار را بر می گرداند. به عنوان مثال به کد زیر نگاه کنید:
<script type="text/javascript"> var d=new Date(); document.write(d.valueOf()); </script>
حاصل اجرای کد فوق می تواند عددی به شکل زیر باشد:
۱۲۶۹۹۳۸۳۳۳۱۱۷
این شی دارای متد هایی است که از آن ها برای بدست آوردن جزئیات بیشتری از تاریخ و زمان استفاده نمود. بعضی از این متد ها و خواص را در جدول زیر مشاهده می کنید:
علاوه بر متد های فوق ، شی Date از متدی به نام ()getTimezoneOffset که اختلاف بین زمان محلی و زمان واحد جهانی رابر حسب دقیقه بر می گرداند نیز پشتیانی می کند. به عنوان مثال این متد مقدار ٢١٠ را برای وقت محلی ایران بر می گرداند. (که همان اختلاف ٣:٣٠ دقیقه ای ساعت تهران نسبت به زمان واحد جهانی است. )
دیدگاه ها