زبان های برنامه نویسی

۱ مطلب با موضوع «هفته‌ی دوم :: نیما» ثبت شده است

جاوا اسکریپت که آن را به اختصار js نیز می‏نامند، زبانی اسکریپتی است که در بیشتر مرورگرهای وب به عنوان بخشی از مرورگر پیاده‏سازی شده است و هدف از آن بهبود بخشید واسط کابری و تولید صفحات پویای وب است. البته استفاده از جاوا اسکریپت تنها به وب محدود نمی‏شود. در زیر انواعی از این استفاده‏ها ذکر شده‏است:

  • در گوگل کروم برای تولید pluginها از این زبان استفاده می‏شود.
  • در نرم‏افزار geogebra برای رسم شکل‏های هندسی و یا تحلیل آن‏ها استفاده می‏شود.
  • در نرم‏افزار adobe acrobat اجازه‏ی استفاده از جاوا اسکریپت در فایل‏های pdf داده شده است.
تاریخچه
جاوا اسکریپت ابتدا در شرکت Netscape توسط Brendan Eich تولید شد. هدف از انجام این پروژه مقابله با مایکروسافت در حوزه‏ی اینترنت بود. شرکت Netscape می خواست نسخه‏ی قابل حمل جاوا را روی مشتری اجرا کند، نسخه‏ای که توسط یک مفسر اجرا شود. بنابراین ابتدا زبانی را ایجاد کردند که نام آن در هنگام ایجاد Mocha و در اولین توزیع، LiveScript بود که بعد از آن به JavaScript تغییر نام داد.

پس از آن، این زبان به سرعت فراگیر شد و مایکروسافت از آن برای اولین بار در مرورگرش، اینترنت اکسپلورر، در نسخه‏ی 3.0 در سال 1996 استفاده کرد.

هم چنین در همان سال، یعنی سال 1996، Netscape این زبان را برای استاندارد کردن به Ecma International فرستاد و ادامه‏ی این فرآیند منجر به نسخه‏ی استاندارد ECMAScript شد.

ویژگی‏ها

ساخت یافتگی و دستوری
جاوا اسکریپت بیشتر نحو ساختاری زبان C را پشتیبانی می کند، مانند: if، for، switchو ... . یک تفاوت این زبان با C این است که در این زبان استفاده از semi-colon اختیاری است.

typing پویا
در جاوا اسکریپت، مانند اکثر زبان‏های پویا، "نوع" به مقدار نسبت داده می‏شود و نه به متغیر. بنابراین نوع type checking این زبان به صورت ضعیف است(weak typing). برای مثال، متغیری مانند x می تواند در ابتدا مقدارش یک عدد صحیح باشد و سپس مقدار آن را به یک رشته تغییر دهیم و الی آخر. از ویژگی‏های جالب این زبان این است که قابلیت duck typing دارد. duck typing یعنی:

"اگر پرنده‏ای مثل اردک راه برود، مثل اردک شنا کند و صدایش مانند اردک باشد، من به آن می گویم اردک!"

منظور از این اصل در این جا این است که در صورتی که یک شی، متدی مانند شی دیگر داشته باشد، و کسی بخواهد از شی دوم استفاده کند، می تواند از شی اول نیز استفاده کند. برای مثال، این مفهوم در جاوا وجود ندارد. زیرا اگر شما در کلاستان، متدهایی به نام‏های next، hasNext و remove را پیاده‏سازی کنید، هم چنان نمی توانید نمونه‏های این کلاس را به متدی که ورودی‏اش iterator است پاس دهید، هر چند که تمام واسط آن را پیاده‏سازی می‏کند. اما در جاوا اسکریپت این چنین نیست. هر شی‏ی که متد مورد نیاز یا متد دیگر را فراهم کند، می تواند به عنوان ورودی آن قرار گیرد.

ارزیابی زمان-اجرا
از جمله ویژگی‏های جاوا اسکریپت وجود تابعی به نام جاوا eval است که می تواند رشته‏ای را که شامل کدی به همین زبان است را گرفته و مقدار آن را محاسبه کند.

"نوع‏ها" در جاوا اسکریپت
جاوا اسکریپت از انواع مقابل پشتیبانی می‏کند: عدد صحیح، رشته، بولین، آرایه و شی:
var x = 0 // note that semi colon is not important
var x = 0.5; // note dynamic typing var x = "JavaScript" var x = true var x = ["java", "script"] var x = {java: "java", script: "script"} // object

شی گرایی در جاوا اسکریپت

در جاوا اسکریپت، علی رغم بحث‏هایی که در مورد تفاوت‏های شی‏گرایی در جاوا اسکریپت و دیگر زبان‏ها وجود دارد، قابلیت‏های شی‏گرایی بسیار وسیعی موجود است.

برنامه‏نویسی prototype-based

برنامه‏نویسی prototype-based سبکی از برنامه‏نویسی شی‏گراست که در آن کلاس‏ها حضور ندارند و استفاده‏ی مجدد رفتارها طی فرآیندی انجام می‏پذیرد که اشیای موجود را به عنوان ماده‏ی اولیه بیاراییم.

اشیای مرکزی

جاوا اسکریپت اشیایی مرکزی دارد. نمونه‏هایی از این اشیا عبارت‏اند از: Math, Object, Array و String. 

کلاس‏ها

در جاوا اسکریپت کلاس به صورتی که در دیگر زبان‏های برنامه‏نویسی مانند جاوا وجود دارد، وجود ندارد. در عوض، جاوا اسکریپت از توابع به جای کلاس‏ها استفاده می کند:

function Person () {}

اشیا

برای ساخت یک شی از یک کلاس کافی است از new برای یک تابع استفاده کنیم؛ به مثال زیر توجه کنید:

var person1 = new Person ();
var person2 = new Person ();

سازنده

در جاوا اسکریپت، نیاز به نوشتن سازنده نیست، زیرا خود تابع در زمان ساخته شدن صدا زده می‏شود:

function Person () {
    alert ('Person instantiated');
}

صفت

خیلی شبیه C!

function Person (gender) {
    this.gender = gender;
    alert ('Person instantiated');
}

var person1 = new Person ("Male");

متدها

برای تعریف یک متد، کافی است به صورت زیر عمل کنیم:

function Person (gender) {
    this.gender = gender;
    alert ('Person instantiated');
}

Person.prototype.sayHello = function () {
    alert ('Hello');
}

var person1 = new Person ('Male');
person1.sayHello ();
وراثت
کافی است که کلاس مورد نظر را به prototype کلاس فرزند نسبت به دهیم. سپس سازنده را اصلاح کنیم:
function Student () {
    // Call the parent constructor
    Person.call(this);
}

// Inherit Person
Student.prototype = new Person ();

// Correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;

// Add sayGoodbye
Student.prototype.sayGoodbye = function () {
    alert ('goodbye');
}

var student1 = new Student ();
student1.sayHello (); // Inherited from Person
student1.sayGoodbye ();

منابع

ویکی پدیای جاوا اسکریپت

W3Schools

آموزش جاوا اسکریپت توسط موزیلا

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ آذر ۹۱ ، ۱۳:۰۱
نیما حمیدی