ورود

View Full Version : شی گرایی در جاوا اسکریپت به زبان ساده



Golsha
سه شنبه 24 دی 1392, 11:39 صبح
سلام دوستان میخواستم ازتون خواهش کنم اگه میشه ایجاد شی رو تو جاوا اسکریپت با زبون ساده یه توضیحی بدید و چند تا مثال بذارید تا حلشون کنم ، البته شاید خواسته زیادی باشه ولی اگه لطف کنید ممنون میشم ، واقعا فهمش سخته .

cups_of_java
سه شنبه 24 دی 1392, 17:00 عصر
زبان جاوا اسکریپت شی گرا نیست. یعنی اصن مفهموم کلاس و انواع داده توش وجود نداره که ازشون شی درست کنید. (اول اینو در نظر بگیر که جاوا اسکریپت تایپ (نوع) نداره و همه چی در زمان اجرا و بدون تایپ و کاملن ازاد و باز هستش.) خب پس چی؟
توی زبان جاوا اسکریپت همه چیز تابع هست. یعنی ما یا انواع اولیه مثل اعداد و رشته های حرفی و boolean داریم یا تابع! هیچی جز اینا نیست. بنابراین وقتی یه شی درست میشه اون یک شی (نمونه)‌از این انواعی که گفتم هست.
برای ایجاد یک شی شما از نماد JSON استفاده میکنید:
var object = {};
و می تونید توش property بزارید:
object.a = 10
یا اینکه میگفتید:
var object = { a: 10 };
خب؟ حالا می تونید به همین شکل توی شی تون متغیر و یا تابع هم بزارید. خوب این میشه یک شی جاوا اسکریپت! اما نوع نداری یعنی نمی تونی بازم از این شی new کنی! چون Constructor نداری.

برای ایجاد شی از طریق Constructor و یا همون new شما باید یه تابع Constructor تو کلاست میداشتی. اینجا کلاس نداری. پس هر تابعی می تونه Constructor یک شی جدید باشه و همینطور هم هست:

function MyClass(i){
this.a = i;
}

var object = new MyClass( 10 );
console.log( object.a );

jalil_gh
سه شنبه 24 دی 1392, 17:02 عصر
ساده ترین حالتش به این صورته.
var obj = {};
الان obj یک شی خالی هست. حالا شما می‌تونید پراپرتی‌ها و متدهایی رو به این شی اضافه کنید.
obj.name = "some name";
obj.getName = function() {
return this.name;
};
حالا این شی یه پراپرتی به اسم name داره و یه متد به اسم getName. شما میتونید حالا از این شی جاهای دیگه استفاده کنید.
البته می‌تونید این متدها و پراپرتی ها رو موقع تعریف شی براش ایجاد کنید.
var obj = {
name: "some name",
getName: function() {
return this.name;
}
};

یه راه دیگه استفاده از توابع جاوااسکریپت به عنوان constructor هست. وقتی شما یه تابع رو با new فراخوانی می‌کنید یه شی رو برمی‌گردونه
function Something() {
this.name = "some name";
this.getName = function() {
return this.name;
};
};

var obj = new Something();
alert(obj.getName());
بعد از این مفاهیم دیگه‌ای هست مثل prototype و اینکه this کجا به چی اشاره می‌کنه. و اینکه به طور پیشفرض پراپرتی‌های private نداریم و همه چی public هست و ...
خلاصه به دنیای پر رمز و راز جاوااسکریپت خوش اومدی.