Metody obiektu w JavaScript ES5
- Poprzednia strona Prototyp obiektu JS
- Następna strona Definicja funkcji JS
ECMAScript 5 (2009) dodał wiele nowych metod obiektów do JavaScript.
Zarządzanie obiektem
// Tworzy obiekt z istniejącym obiektem jako prototypem Object.create() // Dodaje lub zmienia atrybuty obiektu Object.defineProperty(object, property, descriptor) // Dodaje lub zmienia atrybuty obiektu Object.defineProperties(object, descriptors) // Dostęp do atrybutu Object.getOwnPropertyDescriptor(object, property) // Zwraca tablicę wszystkich atrybutów Object.getOwnPropertyNames(object) // Dostęp do prototypu Object.getPrototypeOf(object) // Zwraca tablicę wyciągniętych wyczytywalnych atrybutów Object.keys(object)
Ochrona obiektu
// Zapobiega dodawaniu atrybutów do obiektu Object.preventExtensions(object) // Zwraca true, jeśli atrybuty można dodać do obiektu Object.isExtensible(object) // Zapobiega modyfikacji atrybutów obiektu (nie wartości) Object.seal(object) // Zwraca true, jeśli obiekt jest zamknięty Object.isSealed(object) // Zapobiega jakimkolwiek zmianom w obiekcie Object.freeze(object) // Zwraca true, jeśli obiekt jest zamarznięty Object.isFrozen(object)
Zmiana wartości atrybutu
语法
Object.defineProperty(object, property, {value : value)
instancja
W tym przykładzie zmieniamy wartość atrybutu:
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Modyfikacja atrybutu Object.defineProperty(person, "language", {value : "NO"});
Zmiana metadanych
ES5 pozwala na zmianę następujących metadanych atrybutów:
writable : true // Wartość atrybutu może być zmieniona enumerable : true // Atrybut można liczyć configurable : true // Atrybut można ponownie skonfigurować
writable : false // Wartość atrybutu nie może być zmieniona enumerable : false // Atrybut nie jest liczony configurable : false // Atrybut nie może być ponownie skonfigurowany
ES5 pozwala na zmianę getterów i setterów:
// Definicja gettera get: function() { return language } // Definicja settera set: function(value) { language = value }
Ten przykład ustawia language jako tylko do odczytu:
Object.defineProperty(person, "language", {writable:false});
Ten przykład uczyni language niewypisalnym:
Object.defineProperty(person, "language", {enumerable:false});
Wyświetlanie wszystkich atrybutów
Ten przykład wyświetla wszystkie atrybuty obiektu:
instancja
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.getOwnPropertyNames(person); // Zwraca tablicę tablic
Wyświetlanie wypisanych atrybutów
Ten przykład wyświetla tylko wypisane atrybuty obiektu:
instancja
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.keys(person); // Zwraca tablicę wypisanych atrybutów
Dodawanie atrybutu
Ten przykład dodaje nowy atrybut do obiektu:
instancja
// Tworzenie obiektu const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Dodawanie atrybutu Object.defineProperty(person, "year", {value:"2008"});
Dodawanie Getterów i Setterów
Object.defineProperty()
Metoda może również być używana do dodawania Getterów i Setterów:
instancja
// Tworzenie obiektu const person = {firstName:"Bill", lastName:"Gates"}; // Definicja gettera Object.defineProperty(person, "fullName", { get: function () {return this.firstName + " " + this.lastName;} });
przykład instancji licznika
// Definicja obiektu const obj = {counter:0}; // Definicja settera 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 (i) {this.counter -= i;} }); // Operacja licznika: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
- Poprzednia strona Prototyp obiektu JS
- Następna strona Definicja funkcji JS