Beranda » Coding » JavaScript Berorientasi Objek (OOJS) 3 Cara Membuat Objek Obyek

    JavaScript Berorientasi Objek (OOJS) 3 Cara Membuat Objek Obyek

    Ketika bahasa pemrograman semua tentang benda, hal pertama yang perlu kita pelajari adalah cara membuat objek. Membuat objek dalam JavaScript cukup mudah: sepasang kurung kurawal akan melakukan pekerjaan itu, yaitu tidak satu-satunya jalan untuk membuat objek atau satu-satunya jalan Anda harus menggunakannya.

    Dalam JavaScript, instance objek adalah dibuat dari objek bawaan dan muncul ketika program sedang berjalan. Sebagai contoh, Tanggal adalah objek bawaan yang memberi kami informasi tentang tanggal. Jika kami ingin menampilkan tanggal saat ini di sebuah halaman, kami membutuhkan contoh runtime dari Tanggal yang membawa informasi tentang tanggal saat ini.

    JavaScript juga memungkinkan kita mendefinisikan objek kita sendiri yang dapat menghasilkan instance objek mereka sendiri di runtime. Dalam JavaScript, semuanya adalah objek dan setiap objek memiliki leluhur tertinggi bernama Obyek. Penciptaan instance objek disebut Instansiasi.

    1. The baru operator

    Salah satu metode yang paling umum dan terkenal untuk membuat instance objek baru adalah dengan menggunakan baru operator.

    Anda membutuhkan konstruktor untuk membuat baru pekerjaan operator. Konstruktor adalah metode objek yang menyatukan a contoh baru dari objek itu. Sintaks dasarnya terlihat seperti ini:

     konstruktor baru () 

    Seorang konstruktor dapat terima argumen yang dapat digunakan untuk mengubah atau menambahkan properti ke instance objek yang dibangunnya. Konstruktor memiliki nama yang sama sebagai objek miliknya.

    Berikut adalah contoh cara membuat contoh dari Tanggal() obyek dengan baru kata kunci:

     dt = Tanggal baru (2017, 0, 1) console.log (dt) // Minggu 01 Jan 2017 00:00:00 GMT + 0100 

    Tanggal() adalah konstruktor untuk membuat yang baru Tanggal obyek. Konstruktor yang berbeda untuk suatu objek ambil argumen yang berbeda untuk membuat jenis instance objek yang sama dengan atribut yang bervariasi.

    Tidak semua objek bawaan dalam JavaScript dapat dibuat seperti itu Tanggal. Ada benda-benda itu jangan datang dengan konstruktor: Matematika, JSON dan Mencerminkan, tapi mereka masih benda biasa.

    Di antara objek bawaan yang memiliki konstruktor, Simbol tidak dapat dipanggil dalam gaya konstruktor untuk instantiate yang baru Simbol contoh. Itu hanya bisa disebut sebagai fungsi yang mengembalikan yang baru Simbol nilai.

    Juga, di antara objek bawaan yang memiliki konstruktor, tidak semua memerlukan konstruktor untuk dipanggil dengan baru operator untuk dipakai. Fungsi, Array, Kesalahan, dan RegExp bisa juga disebut sebagai fungsi, tanpa menggunakan baru kata kunci, dan mereka akan instantiate dan mengembalikan instance objek baru.

    2. The Mencerminkan obyek

    Programmer backend mungkin sudah tidak asing lagi API Refleksi. Refleksi adalah fitur bahasa pemrograman untuk memeriksa dan memperbarui beberapa entitas dasar, seperti objek dan kelas, saat runtime.

    Dalam JavaScript, Anda sudah bisa melakukan beberapa operasi refleksi menggunakan Obyek. Tapi, a API Refleksi yang tepat akhirnya ada di JavaScript juga.

    Itu Mencerminkan objek memiliki seperangkat metode untuk buat dan perbarui instance objek. Itu Mencerminkan obyek tidak memiliki konstruktor, jadi tidak bisa dipakai dengan baru operator, dan, sama seperti Matematika dan JSON, saya t tidak bisa disebut sebagai fungsi antara.

    Namun, Mencerminkan memiliki setara dengan baru operator: itu Reflect.construct () metode.

     Reflect.construct (target, argumentsList [, newTarget]) 

    Keduanya target dan opsional target baru argumen adalah benda memiliki konstruktor sendiri, sementara argumentsList adalah daftar argumen untuk diteruskan ke konstruktor target.

     var dt = Reflect.construct (Tanggal, [2017, 0, 1]); console.log (dt); // Minggu 01 Jan 2017 00:00:00 GMT + 0100 

    Kode di atas memiliki efek yang sama sebagai instantiating Tanggal() menggunakan baru operator. Meskipun Anda masih bisa menggunakannya baru, Refleksi adalah suatu ECMAScript 6 standar. Ini juga memungkinkan Anda memanfaatkan target baru argumen, yang merupakan keunggulan lain dari baru operator.

    Nilai dari target baruPrototipe (tepatnya, ini adalah prototipe target barukonstruktor) menjadi prototipe dari instance yang baru dibuat.

    Prototipe adalah milik Obyek, nilai yang ada juga merupakan objek, membawa properti dari objek asli. Singkatnya, suatu objek mendapatkan anggotanya dari prototipe.

    Di sini, mari kita lihat sebuah contoh:

     class A constructor () this.message = function () console.log ('message from A') kelas B constructor ()  message () console.log ('message from B')  data () console.log ('data from B') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // pesan dari A console.log (obj.data ()); // data dari B console.log (obj instance B) // benar 

    Dengan melewati B sebagai argumen ketiga Reflect.construct (), nilai prototipe dari obj objek adalah dibuat sama sebagai prototipe dari BKonstruktor (yang memiliki properti pesan dan data).

    Demikian, obj dapat mengakses pesan dan data, tersedia di prototipe-nya. Tapi sejak itu obj dibuat menggunakan SEBUAH, itu juga memiliki sendiri pesan saya t diterima dari SEBUAH.

    Meskipun obj dibangun sebagai sebuah array, itu bukan turunan dari Array, karena prototipe diatur ke Obyek.

     obj = Reflect.construct (Array, [1,2,3], Object) console.log (obj) // Array [1, 2, 3] console.log (objek instance dari Array) // false 

    Reflect.construct () dapat berguna saat Anda ingin membuat objek menggunakan lebih dari satu cetak biru.

    3. The Object.create () metode

    Anda juga dapat membuat objek biasa baru dengan prototipe tertentu melalui Object.create (). Ini, juga, mungkin tampak sangat mirip dengan menggunakan baru operator, tetapi tidak.

     Object.create (O [, propertiesObject]) 

    Itu HAI Argumen adalah objek yang melayani prototipe untuk objek baru yang akan dibuat. Opsional propertiObject argumen adalah a daftar properti Anda mungkin ingin menambahkan ke objek baru.

     class A constructor ()  message () console.log ('message from A') var obj = Object.create (A baru), data: dapat ditulis: true, dapat dikonfigurasi: true, nilai: function () return 'data from obj') console.log (obj.message ()) // pesan dari A console.log (obj.data ()) // data dari obj obj1 = Object.create ( A baru (), foo: dapat ditulis: benar, dapat dikonfigurasi: benar, nilai: function () kembalikan 'foo from obj1') console.log (obj1.message ()) // pesan dari konsol. log (obj1.foo ()) // foo dari obj1 

    Dalam obj objek, properti yang ditambahkan adalah data, saat di obj1, nya foo. Jadi, seperti yang Anda lihat, kita dapat memiliki properti dan metode ditambahkan ke objek baru.

    Ini bagus ketika Anda ingin membuat beberapa objek dari jenis yang sama tetapi dengan sifat atau metode tambahan yang berbeda. Itu Object.create () sintaks menghemat kesulitan pengkodean semuanya secara terpisah.