ECMAScript 5 menambahkan banyak Metode Objek baru ke JavaScript.
// Menambah atau mengubah properti objek Object.defineProperty(object, property, descriptor) // Menambah atau mengubah banyak properti objek Object.defineProperties(object, descriptors) // Mengakses Properti Object.getOwnPropertyDescriptor(object, property) // Mengembalikan semua properti sebagai array Object.getOwnPropertyNames(object) // Mengembalikan properti enumerable sebagai array Object.keys(object) // Mengakses prototipe Object.getPrototypeOf(object) // Mencegah penambahan properti ke objek Object.preventExtensions(object) // Mengembalikan nilai true jika properti dapat ditambahkan ke objek Object.isExtensible(object) // Mencegah perubahan properti objek (bukan nilai) Object.seal(object) // Mengembalikan nilai true jika objek disegel Object.isSealed(object) // Mencegah perubahan apa pun pada objek Object.freeze(object) // Mengembalikan nilai true jika objek dibekukan Object.isFrozen(object)
Section Artikel
Mengubah Nilai Properti
Sintaks
Object.defineProperty (objek, properti, {nilai: nilai})
Contoh ini mengubah nilai properti:
<!DOCTYPE html> <html> <body> <h2> JavaScript Object.defineProperty() </h2> <p> Contoh ini mengubah nilai properti. </p> <p id="demo"></p> <script> // Create an object: var person = { firstName: "John", lastName : "Doe", language : "EN" }; // Change a property Object.defineProperty(person, "language", {value:"NO"}) document.getElementById("demo").innerHTML = person.language; </script> </body> </html>
Mengubah Data Meta
ES5 memungkinkan data meta properti berikut diubah:
writable: true // Nilai properti dapat diubah enumerable: true // Properti dapat disebutkan Configurable: true // Properti dapat dikonfigurasi ulang
writable: false // Nilai properti tidak dapat diubah enumerable: false // Properti tidak dapat dihitung Configurable: false // Properti tidak dapat dikonfigurasi ulang
ES5 memungkinkan getter dan setter diubah:
// Mendefinisikan getter get: function () {return language} // Mendefinisikan setter set: fungsi (nilai) {bahasa = nilai}
Contoh ini menjadikan bahasa hanya-baca:
Object.defineProperty(person, "language", {writable:false});
Contoh ini membuat bahasa tidak dapat dihitung:
Object.defineProperty(person, "language", {enumerable:false});
Mendaftar Semua Properti
Contoh ini mencantumkan semua properti suatu objek:
<!DOCTYPE html> <html> <body> <h2> JavaScript Object.getOwnPropertyNames() </h2> <p> Contoh ini mencantumkan properti suatu objek. </p> <p id="demo"></p> <script> // Create an object: var person = { firstName: "John", lastName : "Doe", language : "EN" } // Change Property Object.defineProperty(person, "language", {enumerable:false}); // Display Properties document.getElementById("demo").innerHTML = Object.getOwnPropertyNames(person); </script> </body> </html>
Mendaftar Properti yang Dapat Dihitung
Contoh ini mencantumkan hanya properti yang dapat dihitung dari suatu objek:
<!DOCTYPE html> <html> <body> <h2> JavaScript Object.keys() </h2> <p> Contoh ini mencantumkan properti yang dapat dihitung dari suatu objek. </p> <p id="demo"></p> <script> // Create an object: var person = { firstName: "John", lastName : "Doe", language : "EN" } // Change Property Object.defineProperty(person, "language", {enumerable:false}); // Display Properties document.getElementById("demo").innerHTML = Object.keys(person); </script> </body> </html>
Menambahkan Properti
Contoh ini menambahkan properti baru ke objek:
<!DOCTYPE html> <html> <body> <h2> JavaScript Object.defineProperty() </h2> <p> Contoh ini menambahkan properti baru ke objek. </p> <p id="demo"></p> <script> // Create an object: var person = { firstName: "John", lastName : "Doe", language : "EN" }; // Add a property Object.defineProperty(person, "year", {value:"2008"}) document.getElementById("demo").innerHTML = person.year; </script> </body> </html>
Menambahkan Getters dan Setter
Metode Object.defineProperty () juga bisa digunakan untuk menambahkan Getters dan Setter:
<!DOCTYPE html> <html> <body> <h2> JavaScript Object.defineProperty() </h2> <p> Contoh ini menggunakan metode defineProperty() untuk menambahkan getter dan setter. </p> <p id="demo"></p> <script> // Create an object: var person = {firstName:"John", lastName:"Doe"}; // Define a getter Object.defineProperty(person, "fullName", { get : function () {return this.firstName + " " + this.lastName;} }); // Display full name document.getElementById("demo").innerHTML = person.fullName; </script> </body> </html>
Contoh Penghitung
<!DOCTYPE html> <html> <body> <h2> Getter dan Setter JavaScript </h2> <p> Sempurna untuk membuat penghitung: </p> <p id="demo"></p> <script> // Define an object var obj = {counter:0}; // Define Setters and Getters Object.defineProperty(obj, "reset", { get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (value) {this.counter -= value;} }); // Play with counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; document.getElementById("demo").innerHTML = obj.counter; </script> </body> </html>