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>