Konstruktor adalah fungsi khusus yang membuat dan menginisialisasi instance objek dari suatu kelas. Dalam JavaScript, konstruktor dipanggil saat objek dibuat menggunakan kata kunci new
Tujuan konstruktor adalah membuat objek baru dan menetapkan nilai untuk setiap properti objek yang ada
Apa Yang Terjadi Ketika Konstruktor Dipanggil?
Saat konstruktor dipanggil dalam JavaScript, urutan operasi berikut terjadi
- Objek kosong baru akan dibuat
- Kata kunci this mulai merujuk ke objek baru dan menjadi objek instance saat ini
- Objek baru kemudian dikembalikan sebagai nilai kembalian dari konstruktor
Contoh Pembuat JavaScript
Berikut adalah beberapa contoh konstruktor dalam JavaScript
Menggunakan Kata Kunci "ini".
Ketika kata kunci this digunakan dalam konstruktor, itu merujuk ke objek yang baru dibuat
//Constructor function User() { this.name = 'Bob'; } var user = new User();
Buat Banyak Objek
Dalam JavaScript, banyak objek dapat dibuat dalam sebuah konstruktor
//Constructor function User() { this.name = 'Bob'; } var user1 = new User(); var user2 = new User();_Dalam contoh di atas, dua objek dibuat menggunakan konstruktor yang sama
Konstruktor dengan Parameter
Konstruktor juga dapat memiliki parameter
Dalam contoh di atas, argumen diteruskan ke konstruktor selama pembuatan objek. Ini memungkinkan setiap objek memiliki nilai properti yang berbeda
Konstruktor vs Objek Literal
Literal objek biasanya digunakan untuk membuat objek tunggal sedangkan konstruktor berguna untuk membuat banyak objek
//Object literal let user = { name: 'Bob' }//Constructor function User() { this.name = 'Bob'; } var user1 = new User(); var user2 = new User();Setiap objek yang dibuat menggunakan konstruktor adalah unik. Properti dapat ditambahkan atau dihapus dari suatu objek tanpa memengaruhi objek lain yang dibuat menggunakan konstruktor yang sama. Namun, jika objek dibangun menggunakan literal objek, setiap perubahan yang dilakukan pada variabel yang diberi nilai objek akan mengubah objek aslinya.
Prototipe Objek
Properti dan metode dapat ditambahkan ke konstruktor menggunakan prototipe
//Constructor function User() { this.name = 'Bob'; } let user1 = new User(); let user2 = new User(); //Adding property to constructor using prototype User.prototype.age = 25; console.log(user1.age); // 25 console.log(user2.age); // 25Dalam contoh di atas, dua objek //Constructor function User() { this.name = 'Bob'; } var user1 = new User(); var user2 = new User();_1 dibuat menggunakan konstruktor. Properti baru //Constructor function User() { this.name = 'Bob'; } var user1 = new User(); var user2 = new User();2 kemudian ditambahkan ke konstruktor menggunakan prototipe, yang dibagikan di semua instance objek //Constructor function User() { this.name = 'Bob'; } var user1 = new User(); var user2 = new User();1
Konstruktor bawaan
JavaScript memiliki beberapa konstruktor bawaan, termasuk berikut ini
var a = new Object(); var b = new String(); var c = new String('Bob') var d = new Number(); var e = new Number(25); var f = new Boolean(); var g = new Boolean(true);_Meskipun konstruktor ini ada, disarankan untuk menggunakan tipe data primitif jika memungkinkan, seperti
var a = 'Bob'; var b = 25; var c = true;String, angka, dan boolean tidak boleh dideklarasikan sebagai objek karena menghambat kinerja
Lacak, Analisis, dan Kelola Kesalahan Dengan Rollbar
Mengelola kesalahan dan pengecualian dalam kode Anda itu menantang. Itu dapat membuat penggelaran kode produksi menjadi pengalaman yang mengerikan. Mampu melacak, menganalisis, dan mengelola kesalahan secara waktu nyata dapat membantu Anda melanjutkan dengan lebih percaya diri. Rollbar mengotomatiskan pemantauan dan penyortiran kesalahan, membuat perbaikan kesalahan Java lebih mudah dari sebelumnya. Daftar Sekarang
Dalam JavaScript, ketika kata kunci // constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_8 digunakan dalam fungsi konstruktor, // constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John8 merujuk ke objek saat objek dibuat. Misalnya,
// constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // JohnOleh karena itu, ketika sebuah objek mengakses properti, ia dapat langsung mengakses properti sebagai // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John0
Parameter Fungsi Pembuat JavaScript
Anda juga dapat membuat fungsi konstruktor dengan parameter. Misalnya,
// constructor function function Person (person_name, person_age, person_gender) { // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () { return ('Hi' + ' ' + this.name); } } // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam"Dalam contoh di atas, kami telah meneruskan argumen ke fungsi konstruktor selama pembuatan objek
const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');Ini memungkinkan setiap objek memiliki properti yang berbeda. Seperti yang ditunjukkan di atas,
// constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John1 memberi John
// constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John2 memberi Sam
Buat Objek. Fungsi Konstruktor Vs Obyek Literal
- Object Literal umumnya digunakan untuk membuat objek tunggal. Fungsi konstruktor berguna jika Anda ingin membuat banyak objek. Misalnya,
- Setiap objek yang dibuat dari fungsi konstruktor adalah unik. Anda dapat memiliki properti yang sama dengan fungsi konstruktor atau menambahkan properti baru ke satu objek tertentu. Misalnya,
Sekarang properti // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John_3 ini unik untuk objek // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John4 dan tidak tersedia untuk objek // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John5
Namun, jika objek dibuat dengan literal objek, dan jika variabel didefinisikan dengan nilai objek tersebut, setiap perubahan nilai variabel akan mengubah objek aslinya. Misalnya,
// using object lateral let person = { name: 'Sam' } console.log(person.name); // Sam let student = person; // changes the property of an object student.name = 'John'; // changes the origins object property console.log(person.name); // JohnSaat objek dibuat dengan literal objek, setiap variabel objek yang diturunkan dari objek tersebut akan bertindak sebagai tiruan dari objek aslinya. Karenanya, setiap perubahan yang Anda buat pada satu objek juga akan tercermin pada objek lainnya
Menambahkan Properti Dan Metode dalam Objek
Anda dapat menambahkan properti atau metode dalam objek seperti ini
// constructor function function Person () { this.name = 'John', this.age = 23 } // creating objects let person1 = new Person(); let person2 = new Person(); // adding property to person1 object person1.gender = 'male'; // adding method to person1 object person1.greet = function () { console.log('hello'); } person1.greet(); // hello // Error code // person2 doesn't have greet() method person2.greet();Keluaran
// constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_0Dalam contoh di atas, properti baru // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John6 dan metode baru // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John7 ditambahkan ke objek // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John4
Namun, properti dan metode baru ini hanya ditambahkan ke // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John4. Anda tidak dapat mengakses // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John_6 atau // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John7 dari // constructor function function Person () { this.name = 'John', } // create object const person1 = new Person(); // access properties console.log(person1.name); // John5. Karenanya program memberikan kesalahan ketika kami mencoba mengakses // constructor function function Person (person_name, person_age, person_gender) { // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () { return ('Hi' + ' ' + this.name); } } // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" 3
Prototipe Objek JavaScript
Anda juga dapat menambahkan properti dan metode ke fungsi konstruktor menggunakan prototipe. Misalnya,
// constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_1Untuk mempelajari lebih lanjut tentang prototipe, kunjungi JavaScript Prototype
Konstruktor Bawaan JavaScript
JavaScript juga memiliki konstruktor bawaan. Beberapa dari mereka adalah
// constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_2Dalam JavaScript, string dapat dibuat sebagai objek oleh
// constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_3Dalam JavaScript, angka dapat dibuat sebagai objek oleh
// constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_4Dalam JavaScript, boolean dapat dibuat sebagai objek oleh
// constructor function function Person () { this.name = 'John', this.age = 23, this.greet = function () { console.log('hello'); } } // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John_5Catatan. Disarankan untuk menggunakan tipe data primitif dan membuatnya dengan cara biasa, seperti // constructor function function Person (person_name, person_age, person_gender) { // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () { return ('Hi' + ' ' + this.name); } } // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" 4, // constructor function function Person (person_name, person_age, person_gender) { // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () { return ('Hi' + ' ' + this.name); } } // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" 5 dan // constructor function function Person (person_name, person_age, person_gender) { // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () { return ('Hi' + ' ' + this.name); } } // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" 6
Anda tidak boleh mendeklarasikan string, angka, dan nilai boolean sebagai objek karena memperlambat program
Catatan. Di JavaScript, kata kunci // constructor function function Person (person_name, person_age, person_gender) { // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () { return ('Hi' + ' ' + this.name); } } // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" _7 diperkenalkan di ES6 (ES2015) yang juga memungkinkan kita membuat objek. Kelas mirip dengan fungsi konstruktor di JavaScript. Untuk mempelajari lebih lanjut, kunjungi