Sebenarnya, ada beberapa cara untuk membuat objek dalam JavaScript. Saat Anda hanya ingin membuat objek, tidak ada untungnya membuat objek " berbasis konstruktor " menggunakan operator " baru ". Ini sama dengan membuat objek menggunakan sintaks " objek literal ". Tetapi objek " berbasis konstruktor " yang dibuat dengan operator " baru " mulai digunakan secara luar biasa ketika Anda berpikir tentang " warisan prototypal ". Anda tidak dapat mempertahankan rantai pewarisan dengan objek yang dibuat dengan sintaks literal. Tetapi Anda dapat membuat fungsi konstruktor , melampirkan properti dan metode ke prototipe."Operator, itu akan mengembalikan objek yang akan memiliki akses ke semua metode dan properti yang dilampirkan dengan prototipe fungsi konstruktor itu.
Berikut adalah contoh membuat objek menggunakan fungsi konstruktor (lihat penjelasan kode di bagian bawah):
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
Person.prototype.fullname = function() {
console.log(this.firstname + ' ' + this.lastname);
}
var zubaer = new Person('Zubaer', 'Ahammed');
var john = new Person('John', 'Doe');
zubaer.fullname();
john.fullname();
Sekarang, Anda dapat membuat objek sebanyak yang Anda inginkan dengan membuat fungsi konstruksi Person dan semuanya akan mewarisi nama lengkap () darinya.
Catatan: kata kunci " ini " akan merujuk ke objek kosong dalam fungsi konstruktor dan setiap kali Anda membuat objek baru dari Orang yang menggunakan operator " baru ", kata kunci ini akan secara otomatis mengembalikan objek yang berisi semua properti dan metode yang dilampirkan dengan kata kunci " ini " . Dan objek ini pasti akan mewarisi metode dan properti yang dilampirkan dengan prototipe fungsi konstruktor Person (yang merupakan keuntungan utama dari pendekatan ini).
Omong-omong, jika Anda ingin mendapatkan fungsionalitas yang sama dengan sintaks " objek literal ", Anda harus membuat nama lengkap () pada semua objek seperti di bawah ini:
var zubaer = {
firstname: 'Zubaer',
lastname: 'Ahammed',
fullname: function() {
console.log(this.firstname + ' ' + this.lastname);
}
};
var john= {
firstname: 'John',
lastname: 'Doe',
fullname: function() {
console.log(this.firstname + ' ' + this.lastname);
}
};
zubaer.fullname();
john.fullname();
Akhirnya, jika Anda sekarang bertanya mengapa saya harus menggunakan pendekatan fungsi konstruktor alih-alih pendekatan objek literal :
*** Warisan prototipe memungkinkan rantai pewarisan sederhana yang bisa sangat berguna dan kuat.
*** Ini menghemat memori dengan mewarisi metode umum dan properti yang didefinisikan dalam prototipe fungsi konstruktor. Jika tidak, Anda harus menyalinnya berulang-ulang di semua objek.
Saya harap ini masuk akal.
a = new Object
,a = new Object()
,a = {}
, literal jauh lebih sederhana dan beberapa tes aku berlari sambil lalu mengatakan itu adalah lebih cepat, kompiler yang lebih baru mungkin telah menyebabkan pernyataan saya palsu. Hal yang sama berlaku untuk array literal