In JavaScript werden die Eigenschaften eines Objekts in zwei Typen unterteilt: Dateneigenschaften und Speichereigenschaften:
Der Unterschied zwischen den beiden Attributen
Wir verwenden Object.defineProperty(), um zunächst intuitiv den Unterschied zwischen den beiden zu spüren.
Die Methode zum Festlegen von Dateneigenschaften mithilfe von Object.defineProperty() ist wie folgt
var obj = {}; Object.defineProperty(obj, "prop", { value: 1, writable: true, //可写性 enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
Die Methode zum Festlegen von Speichereigenschaften mithilfe von Object.defineProperty() ist wie folgt
var obj = {}; Object.defineProperty(obj, "prop", { get set enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
Aus dem obigen Beispiel sehen wir, dass das Speicherattribut nicht die beiden Attribute Wert und Schreibbar hat, sondern durch die Attribute Set und Get ersetzt wird.
Speichereigenschaften
Nachdem wir uns die intuitiven Unterschiede zwischen Datenattributen und Speicherattributen angesehen haben, werfen wir einen detaillierten Blick auf Speicherattribute, ein Attribut, das leicht übersehen wird (das bin ich, TT).
Der größte Unterschied zwischen Speicherattributen und Datenattributen besteht in der Hinzufügung von Gettern/Settern, mit denen der Wert des Attributs bearbeitet und einige praktische Funktionen implementiert werden können.
//example1 function serialnum() { var n =1; var prop = null; Object.defineProperty(this, "n", { get: function() { return n; }, set: function(value) { if(value > n) n = value; else throw '请输入一个大于n的值'; } }) } var obj = new serialnum(); obj.n = 2; //2 obj.n = 0; //Uncaught 请输入一个大于n的值
Im obigen Beispiel wird die Set-Funktion verwendet, um den Wertebereich von n zu steuern.
Der Herausgeber wird Ihnen hier das Speicherattribut für js-Datenattribute vorstellen. Ich hoffe, es wird Ihnen hilfreich sein!