Heim >Web-Frontend >js-Tutorial >Was sind die Object-Objekte in js? Zusammenfassung der Verwendung von Objektobjekten in js

Was sind die Object-Objekte in js? Zusammenfassung der Verwendung von Objektobjekten in js

不言
不言Original
2018-08-15 14:37:102919Durchsuche

Der Inhalt dieses Artikels befasst sich mit den Objektobjekten in js. Diese Zusammenfassung zur Verwendung von Objektobjekten in js hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Eigenschaftsdeskriptor

JavaScript stellt eine interne Datenstruktur bereit, die den Wert eines Objekts beschreibt und sein Verhalten steuert, z. B. ob die Eigenschaft beschreibbar, konfigurierbar, veränderbar und ob aufzählbar usw. ist. Diese interne Datenstruktur wird als „Attributdeskriptor“ bezeichnet.
Jedes Attribut verfügt über einen eigenen entsprechenden Attributdeskriptor, der die Metainformationen des Attributs speichert.

{
    value:'前端',
    writable:false,
    enumerable:true,
    configurable:false,
    get:undefined,
    set:undefined
}

Es gibt derzeit zwei Hauptformen von Attributdeskriptoren in Objekten: Datendeskriptoren und Zugriffsdeskriptoren

Datendeskriptor

Datendeskriptor ist eine Eigenschaft eines Werts, der oder möglicherweise nicht beschreibbar. Der Datendeskriptor verfügt über die folgenden optionalen Schlüsselwerte:

  • Wert: Der diesem Attribut entsprechende Wert kann ein beliebiger gültiger JavaScript-Wert sein (numerischer Wert, Objekt, Funktion usw.). Der Standardwert ist undefiniert

  • beschreibbar: Wenn die Beschreibbarkeit des Attributs wahr ist, kann der Wert durch den Zuweisungsoperator geändert werden. Der Standardwert ist „false“

  • konfigurierbar: Wenn das Konfigurierbare des Attributs „true“ ist, kann der Attributdeskriptor geändert werden und das Attribut kann auch aus dem entsprechenden Objekt gelöscht werden. Der Standardwert ist „false“.

  • aufzählbar: Wenn die Aufzählung des Attributs wahr ist, kann das Attribut im Aufzählungsattribut des Objekts erscheinen. Der Standardwert ist falsch

Zugriffsdeskriptor

Zugriffsdeskriptor ist eine Eigenschaft, die durch ein Getter-Setter-Funktionspaar beschrieben wird. Der Zugriffsdeskriptor verfügt über die folgenden optionalen Schlüsselwerte:

  • get: Stellt eine Getter-Methode für die Eigenschaft bereit. Wenn kein Getter vorhanden ist, ist sie undefiniert. Beim Zugriff auf die Eigenschaft werden bei der Ausführung der Methode keine Parameter übergeben, aber dieses Objekt wird übergeben.

  • set: Stellt eine Setter-Methode für die bereit Eigenschaft, wenn kein Setter vorhanden ist. Sie ist undefiniert. Diese Methode wird ausgelöst, wenn der Eigenschaftswert geändert wird. Diese Methode akzeptiert den einzigen Parameter, nämlich den neuen Parameterwert der Eigenschaft.

  • konfigurierbar: Wenn das konfigurierbare Attribut „true“ ist, kann der Attributdeskriptor geändert werden und das Attribut kann auch aus dem entsprechenden Objekt gelöscht werden. Der Standardwert ist „false“.

  • aufzählbar: Wenn die Aufzählung des Attributs wahr ist, kann das Attribut im Aufzählungsattribut des Objekts erscheinen. Der Standardwert ist falsch.
  • Eigenschaftsdeskriptor abrufen

Die Methode Object.getOwnPropertyDescriptor() gibt den Eigenschaftsdeskriptor zurück, der einer eigenen Eigenschaft für das angegebene Objekt entspricht.

Object.getOwnPropertyDescriptor(obj,prop)

    obj: das zu findende Zielobjekt
  • prop: der Eigenschaftsname (String-Typ) im Zielobjekt
  • Rückgabewert: Wenn die angegebene Eigenschaft für das Objekt vorhanden ist, geben Sie ihr Eigenschaftsdeskriptorobjekt zurück, andernfalls geben Sie undefiniert zurück
  • var obj={}
    obj.attr='前端';
    
    console.log(Object.getOwnPropertyDescriptor(obj,'attr'));
  • Eigenschaftsdeskriptor festlegen

1. Die Methode Object.defineProperty() definiert neue Eigenschaften oder ändert vorhandene Eigenschaften für das Objekt und gibt das Objekt

Object.defineProperty(obj,prop,descriptor);

    obj zurück: das Objekt, für das die Eigenschaft definiert werden soll
  • prop: der Name der Eigenschaft, die definiert oder geändert werden soll
  • descriptor: das Objekt, das an die Funktion übergeben wird
  • Rückgabewert: das an die Funktion übergebene Objekt
  • 2. Die Methode Object.defineProperties() definiert eine oder mehrere neue Eigenschaften oder ändert vorhandene Eigenschaften für das Objekt und gibt das Objekt zurück
Object.defineProperties(obj,props)

    obj: Das Objekt, für das die Eigenschaften definiert werden sollen
  • props: Das Objekt, dessen Aufzählung Es sollen Eigenschaften oder geänderte Eigenschaftsdeskriptoren definiert werden. Objekt
  • Rückgabewert: Das an die Funktion übergebene Objekt
  • Optionaler Schlüsselwert des Attributdeskriptors

1. Wert: Gibt den Wert an, der dem Zielattribut entspricht. Kann jeder gültige JavaScript-Wert sein (numerischer Wert, Objekt, Funktion usw.). Der Standardwert ist undefiniert

var obj={};
obj.name='张三';

var attr=Object.getOwnPropertyDescriptor(obj,'name');
console.log(attr.value);

Object.defineProperty(obj,'name',{value:'李四'});
console.log(obj.name);

2.writable:Boolescher Wert, der angibt, ob der Wert des Zielattributs geändert werden kann. Wenn die Schreibbarkeit des Attributs wahr ist, kann der Wert durch den Zuweisungsoperator geändert werden. Der Standardwert ist false

var obj={};
Object.defineProperty(obj,'attr',{
       value:'前端',
       writable:false
});
console.log(obj.attr);
obj.attr=100;
console.log(obj.attr);

3.configurable:Boolescher Wert, der angibt, ob der Deskriptor des Zielattributs geändert werden kann. Wenn die konfigurierbare Eigenschaft des Attributs wahr ist, kann der Attributdeskriptor geändert und das Attribut auch aus dem entsprechenden Objekt gelöscht werden. Der Standardwert ist false

var obj=Object.definePropety({},'attr',{
    value:'大前端',
    configurable:false
});

Object.definePropety(obj,'attr',{value:100});
Object.definePropety(obj,'attr',{writable:true});
Object.definePropety(obj,'attr',{enumerable:true});
Object.definePropety(obj,'attr',{configurable:true});

4.enumerable:Boolescher Wert, der angibt, ob das Zielattribut durchlaufen werden kann. Wenn die Aufzählung der Eigenschaft wahr ist, kann die Eigenschaft in der Aufzählungseigenschaft des Objekts erscheinen. Der Standardwert ist „false“

Wenn der aufzählbare Wert des Objektattributs „false“ ist, können die folgenden drei Operationen das Attribut nicht abrufen:


    for...in-Anweisung
  • Object.keys()-Methode
  • JSON.stringify()-Methode
  • var obj={};
    Object.defineProperty(obj,'attr',{value:'前端',enumerable:false});
    for(var key in obj){console.log(key);}
    console.log(Object.keys(obj));
    console.log(JSON.stringify(obj));
  • Zugriff auf Attributdeskriptor Zusätzlich Neben der direkten Definition können die Eigenschaften des

-Objekts auch über Accessoren definiert werden. Unter diesen ist Setter eine wertspeichernde Funktion, die Verwendung von Set im Attributdeskriptor und die Verwendung von get

var obj=Object.defineProperty({},'attr',{
    get:function(){
        return '前端';
    },
    set:function(){
        console.log('setter:'+value);
    }
});

console.log(obj.attr);
obj.attr=100;

im Attributdeskriptor. JavaScript bietet auch die Möglichkeit, Werte zu speichern Die folgende Schreibmethode:

var obj={
    get attr(){
        return '前端';
    },
    set attr(value){
        console.log('setter:'+value);
    }
}

console.log(obj.attr);
obj.attr=100;

防篡改

定义的对象默认在任何时候、任何位置,无论有意义的还是无意义的都可以修改对象的属性或方法。
而这些篡改可能会影响对象的内置属性或方法,从而导致对象的正常功能可能无法使用。
1.禁止扩展:禁止为对象扩展新的属性或方法

var obj={};
Object.preventExtensions(obj);
obj.attr='前端';
console.log(Object.isExtensible(obj));
console.log(obj.attr);

2.密封对象:禁止扩展新的属性或方法,禁止配置现有的属性或方法的描述符,仅允许读写属性的值

var sealed={};
Object.seal(sealed);
Object.isSealed(sealed);

Object.isExtensible(sealed);

3.冻结对象:禁止对对象执行任何修改操作

var frozen={1:81};
Object.isFrozen(frozen);
Object.freeze(frozen);
Object.isFrozen(frozen);

Object.isSealed(frozen);
Object.isExtensible(frozen);

相关推荐:

JS中Object对象的原型的使用方法

js如何打印object对象_javascript技巧

详解JavaScript中的Object对象 的示例代码

浅谈Javascript中Object与Function对象_javascript技巧

Das obige ist der detaillierte Inhalt vonWas sind die Object-Objekte in js? Zusammenfassung der Verwendung von Objektobjekten in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn