4 راه برای ساختن Object ها در جاوااسکریپت

دوشنبه ۱۸ تیر ۹۷ توسط محمدسینا مرادی

در جاوا اسکریپت چهار متد برای ساختن Object ها وجود دارد که عبارت اند از:

1. Object Literals

2. Operator یا Constructor جدید

3. متد Object.create

4. کلاس

در این مقاله چهار متد را با یکدیگر یاد می گیریم.

Object Literals

object literal همچنین با نام object initializer نیز شناخته شده است که مجموعه ای از جملات جدا شده از نام ها و مقادیر جفتی است. شما می توانید object literal را به صورت زیر نشان دهید:

var car = {
    model: 'bmw',
    color: 'red',
    price: 2000
}
console.log(JSON.stringify(car));

شما می توانید خواص را به صورت پویا در یک object پس از ایجاد آن اضافه کنید. در اینجا ما ویژگی پویا car.type را اضافه می کنیم:

var car = {
    model: 'bmw',
    color: 'red',
    price: 2000
}
console.log(JSON.stringify(car));
car.type = 'manual'; // dynamic property  console.log(JSON.stringify(car));

object literal یک عبارت ساده است که با هر بار statement ای که در کد اجرا می شود یک object را ایجاد می کند. شما می توانید از Object.defineProperty برای ساختن ویژگی ها در object literal استفاده کنید همانند مثال زیر:

var car = {
    model: 'bmw',
    color: 'red',
    price: 2000
}
 
Object.defineProperty(car, "type", {
    writable: true,
    enumerable: true,
    configurable: false,
    value: 'gas'
});
console.log(car.type); //gas 

مزیت اصلی استفاده از Object.defineProperty این است که شما می توانید مقادیر را برای ویژگی object توصیف کنید یا ویژگی های موجود را ویرایش نمایید.

Operator یا Constructor جدید

دومین راه برای ساختن object استفاده از تابع سازنده یا constructor است. اگر شما تابعی را صدا بزنید که از یک operator جدید استفاده می کند ، تابع به عنوان یک constructor  عمل می کند و object بر می گرداند. به کد زیر توجه کنید:

function Car(model, color) {
    this.model = model;
    this.color = color;
}
 
var c1 = new Car('BMW', 'red');
console.log(c1.model);

این متد برای ساختن object همچنین با نام Constructor Invocation Pattern نیز شناخته شده است. در اینجا 2 مرحله برای ساختن تابع سازنده یا constructor وجود دارد:

1. تابعی را ایجاد کنید که نوع object را تعریف می کند.

2. یک نمونه یا instance از object را با استفاده از operator جدید ایجاد کنید.

برای ساختن object برای یک دانش آموز ابتدا تابع را مانند کد زیر بسازید. در این مثال ، this نشان دهنده object ساخته شده ما است پس نام و سن را به عنوان ویژگی ها object قرار داده ایم.

function Student(name, age) {
    this.name = name;
    this.age = age;
}

بعد ، نمونه هایی از نوع object دانش آموز را که در زیر نشان داده شده است را ایجاد کنید:

var s1 = new Student('foo', 7);
console.log(s1.name);
var s2 = new Student('koo', 9);
console.log(s2.name);

شما می توانید از instanceof برای پیدا کردن انواع نمونه و تعیین کردن اینکه آیا s1 نمونه ای از object دانش آموز است استفاده نمایید. همانند کد زیر:

var s1 = new Student('foo', 9);
console.log(s1 instanceof Student);

شما همچنین می توانید از Object.defineProperty برای ایجاد ویژگی ها در تابع سازنده استفاده کنید ، همانطور که در زیر نیز نشان داده شده است:

function Car(model) {
    Object.defineProperty(this, "model", {
        writable: true,
        enumerable: true,
        configurable: false,
        value: model
    });
}
 
var myCar = new Car("Audi A3");
console.log(myCar.model);    // Audi  A3

مزیت اصلی استفاده از Object.defineProperty این است که می توانید مقادیر را برای ویژگی object توصیف کنید.

متد Object.create

شما همچنین می توانید object های جدید را با استفاده از متد Object.create () ایجاد کنید که به شما امکان می دهد نمونه و خواص آن را مشخص کنید. به مثال زیر توجه کنید:

var Car = {
    model: 'BMW',
    color: 'red'
}

شما می توانید از object خودرو (Car) به عنوان یک نمونه اولیه برای ایجاد یک object دیگر استفاده کنید ، همانطور که در زیر نشان داده شده است:

var ElectricCar = Object.create(Car);
console.log(ElectricCar.model); // BMW

در این مثال ، یک Object به نام ElectricCar با استفاده از Object Car به عنوان یک نمونه اولیه ایجاد کرده ایم ، بنابراین Object ElectricCar تمام خصوصیات Object Car را دارد. شما همچنین می توانید ویژگی ها را مانند کد زیر اضافه کنید:

var ElectricCar = Object.create(Car, {
    type: {
        value: 'Electric',
        writable: true,
        configurable: false,
        enumerable: true
    }
});
console.log(ElectricCar.type); // Electric

ویژگی ها بهتر است به عنوان object ها پاس شوند و با استفاده از توصیف ویژگی ها تعیین شوند. همچنین می توانید از متد Object.create برای ساختن ارث بری (inheritance) میان 2 object استفاده کنید.

کلاس

ECMAScript 6 کلید واژه کلاس (class) را برای ساختن کلاس ها در جاوا اسکریپت معرفی کرد. حالا شما می توانید از attribute کلاس برای ساختن کلاس ها در جاوا اسکریپت به جای تابع سازنده استفاده کنید و همچنین از یک operator جدید برای ساختن نمونه ها استفاده نمایید. به کد زیر توجه کنید:

class Car {
 
    constructor(maker, price) {
        this.maker = maker;
        this.price = price;
    }
 
    getInfo() {
        console.log(this.maker + " costs : " + this.price);
    }
}

You can use the Car class to create objects as shown below:

شما می توانید از کلاس Car برای ساختن object ها استفاده کنید ، همانند کد زیر:

var car1 = new Car("BMW", 100);
car1.getInfo();
var car2 = new Car("Audi", 150);
car2.getInfo();

نتیجه

همانطور که دیدید چهار متد را برای ساختن object ها در جاوا اسکریپت یاد گرفتیم که به ترتیب عبارت بودند از : object literal و constructor یا operator جدید و متد Object.create و کلاس.

متد Object.create زمانی که شما نیاز به ایجاد یک object با استفاده از یک object موجود به عنوان یک نمونه اولیه را دارید بسیار مفید و کار آمد است.

 

امیدوارم دوستی خوبی با object ها داشته باشید (-:


کلیدواژه: Object جاوا اسکریپت شی Object Literals Operator یا Constructor جدید متد Object.create کلاس

منابع: www.infragistics.com

ارسال دیدگاه:
برای ارسال دیگاه باید به سیستم وارد شوید و یا ثبت نام کنید. ثبت نام چند لحظه بیشتر زمان شما را نمیگیرد.