Laman » Pengekodan » Objek Berorientasikan Objek (OOJS) 3 Cara Membuat Contoh Objek

    Objek Berorientasikan Objek (OOJS) 3 Cara Membuat Contoh Objek

    Apabila bahasa pengaturcaraan adalah semua tentang objek, Perkara pertama yang perlu kita pelajari ialah bagaimana untuk membuat objek. Membuat objek dalam JavaScript agak mudah: sepasang kurungan keriting akan melakukan pekerjaan itu, bagaimanapun, itu bukan satu-satunya cara untuk membuat objek atau satu-satunya cara anda perlu menggunakannya.

    Dalam JavaScript, contoh objek adalah dicipta dari objek terbina dalam dan muncul apabila program berjalan. Sebagai contoh, Tarikh adalah objek terbina dalam yang memberikan maklumat tentang tarikh. Jika kami ingin menunjukkan tarikh semasa pada halaman, kami memerlukan contoh masa runtuh Tarikh yang membawa maklumat tentang tarikh semasa.

    JavaScript juga membolehkan kami tentukan objek kita sendiri yang boleh menghasilkan contoh benda mereka sendiri semasa runtime. Dalam JavaScript, semuanya adalah objek dan setiap objek mempunyai leluhur muktamad dipanggil Objek. Penciptaan contoh objek dipanggil instantiation.

    1. The baru pengendali

    Salah satu kaedah yang paling umum dan terkenal untuk membuat contoh objek baru adalah dengan menggunakan baru pengendali.

    Anda perlukan a pembina untuk membuat baru kerja pengendali. Pembina adalah kaedah objek yang meletakkan satu contoh baru objek itu. Sintaks asasnya kelihatan seperti ini:

     pembina baru () 

    Pembina boleh menerima hujah yang boleh digunakan untuk menukar atau menambah sifat kepada contoh objek yang dibina. Pembina mempunyai nama yang sama sebagai objek yang dimiliki.

    Berikut adalah contoh bagaimana untuk mencipta contohnya Tarikh() objek dengan baru kata kunci:

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

    Tarikh() adalah pembina untuk membuat yang baru Tarikh objek. Pembina yang berbeza untuk objek mengambil hujah yang berbeza untuk mewujudkan contoh objek yang sama dengan sifat-sifat yang berbeza-beza.

    Tidak semua objek terbina dalam JavaScript boleh instantiated seperti Tarikh. Terdapat objek itu jangan datang dengan pembina: Matematik, JSON dan Terangkan, tetapi mereka masih objek biasa.

    Antara objek terbina dalam yang mempunyai pembina (s), Simbol tidak boleh dipanggil dalam gaya pembina untuk memberi instantiate baru Simbol contohnya. Ia hanya boleh dipanggil sebagai fungsi yang pulangan yang baru Simbol nilai.

    Selain itu, di antara objek terbina dalam yang mempunyai pembina, tidak semua memerlukan konstruktor mereka dipanggil dengan baru pengendali untuk dijadikan instantiated. Fungsi, Array, Ralat, dan RegExp juga boleh dipanggil sebagai fungsi, tanpa menggunakan baru kata kunci, dan mereka akan memberi contoh dan mengembalikan contoh objek baru.

    2. The Terangkan objek

    Pengaturcara backend mungkin sudah biasa dengan API refleksi. Refleksi adalah ciri bahasa pengaturcaraan memeriksa dan mengemaskini beberapa entiti asas, seperti objek dan kelas, semasa runtime.

    Dalam JavaScript, anda sudah boleh melakukan sesetengah operasi pantulan menggunakan Objek. Tetapi, a API Refleksi yang betul akhirnya wujud dalam JavaScript juga.

    The Terangkan objek mempunyai satu set kaedah untuk mencipta dan mengemaskini keadaan objek. The Terangkan objek tidak mempunyai pembina, jadi ia tidak boleh instantiated dengan baru pengendali, dan, sama seperti Matematik dan JSON, ia tidak boleh dipanggil sebagai fungsi sama ada.

    Walau bagaimanapun, Terangkan mempunyai bersamaan dengan baru pengendali: Reflect.construct () kaedah.

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

    Kedua sasaran dan pilihan newTarget hujah adalah objek yang mempunyai konstruktor sendiri, sementara argumentsList ialah senarai hujah untuk diserahkan kepada pembina sasaran.

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

    Kod di atas mempunyai kesan yang sama sebagai instantiating Tarikh() menggunakan baru pengendali. Walaupun anda masih boleh menggunakannya baru, Refleksi adalah ECMAScript 6 standard. Ia juga membolehkan anda untuk menggunakannya newTarget hujah, yang merupakan satu kelebihan berbanding dengan baru pengendali.

    Nilai newTargetprototaip (tepatnya, ia adalah prototaip newTargetpembina) menjadi prototaip contoh yang baru diwujudkan.

    Prototaip adalah harta Objek, nilai yang mana juga objek, membawa sifat objek asal. Pendek kata, objek mendapat ahli-ahlinya daripada prototaipnya.

    Di sini, mari lihat contoh:

     kelas A constructor () this.message = function () console.log ('message from A')  data () console.log ('data dari B') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // mesej dari A console.log (obj.data ()); / / data dari B console.log (obj instanceof B) // true 

    Dengan lulus B sebagai hujah ketiga untuk Reflect.construct (), nilai prototaip obj objek adalah dibuat sama sebagai prototaip Bpembina (yang mempunyai sifat-sifatnya mesej dan data).

    Oleh itu, obj boleh mengakses mesej dan data, boleh didapati di prototaipnya. Tetapi, sejak obj dibuat menggunakan A, ia juga mempunyai sendiri mesej ia terima daripada A.

    Walaupun obj dibina sebagai tatasusunan, ia adalah bukan contoh Array, kerana prototaipnya ditetapkan untuk Objek.

     obj = Reflect.construct (Array, [1,2,3], Objek) console.log (obj) // Array [1, 2, 3] console.log (obj instanceof Array) // false 

    Reflect.construct () boleh berguna apabila anda ingin membuat objek menggunakan lebih daripada satu cetakan biru.

    3. The Objek.create () kaedah

    Anda juga boleh mencipta objek biasa baru dengan prototaip tertentu melalui Objek.create (). Ini juga mungkin kelihatan sangat serupa dengan menggunakan baru pengendali, tetapi tidak.

     Object.create (O [, propertiesObject]) 

    The O hujah adalah objek yang berfungsi sebagai prototaip untuk objek baru yang akan dibuat. Pilihannya propertiesObject hujah adalah a senarai hartanah anda mungkin mahu menambah objek baru.

     var obj = Object.create (baru A (), data: writable: true, configurable: true, value: function () return 'data from obj') console.log (obj.message ()) // message from A console.log (obj.data ()) // data from obj obj1 = Object.create ( baru A (), foo: writable: true, configurable: true, value: function () return 'foo from obj1') console.log (obj1.message ()) // message from A console. log (obj1.foo ()) // foo dari obj1 

    Di dalam obj objek, harta ditambah ialah data, semasa dalam obj1, ia adalah foo. Jadi, seperti yang anda lihat, kita boleh sifat dan kaedah ditambah ke objek baru.

    Ini hebat apabila anda mahu membuatnya pelbagai objek yang sama tetapi dengan ciri atau kaedah tambahan yang berlainan. The Objek.create () sintaks menyelamatkan masalah pengkodan semua secara berasingan.