Maison >interface Web >js tutoriel >Que sont les objets Object en js ? Résumé de la façon d'utiliser les objets objets dans js
Le contenu de cet article porte sur ce que sont les objets Object en js ? Ce résumé sur la façon d'utiliser les objets objets dans js a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
JavaScript fournit une structure de données interne qui décrit la valeur d'un objet et contrôle son comportement, par exemple si la propriété est accessible en écriture, configurable, modifiable et si elle est énumérable, etc. Cette structure de données interne est appelée « descripteur d'attribut ».
Chaque attribut a son propre descripteur d'attribut correspondant, qui enregistre les méta-informations de l'attribut.
{ value:'前端', writable:false, enumerable:true, configurable:false, get:undefined, set:undefined }
Il existe actuellement deux formes principales de descripteurs d'attributs dans les objets : les descripteurs de données et les descripteurs d'accès.
Les descripteurs de données sont une propriété avec une valeur qui peut être ou non inscriptible. Le descripteur de données a les valeurs clés facultatives suivantes :
value : La valeur correspondant à cet attribut peut être n'importe quelle valeur JavaScript valide (valeur numérique, objet, fonction, etc.). La valeur par défaut est indéfinie
inscriptible : lorsque l'écriture de l'attribut est vraie, la valeur peut être modifiée par l'opérateur d'affectation. La valeur par défaut est false
configurable : lorsque la valeur configurable de l'attribut est vraie, le descripteur de l'attribut peut être modifié et l'attribut peut également être supprimé de l'objet correspondant.
enumerable : Lorsque l'énumérable de l'attribut est vrai, l'attribut peut apparaître dans l'attribut d'énumération de l'objet. La valeur par défaut est false
Object.getOwnPropertyDescriptor(obj,prop)
var obj={} obj.attr='前端'; console.log(Object.getOwnPropertyDescriptor(obj,'attr'));Définir la propriété descriptor1. La méthode Object.defineProperty() définit de nouvelles propriétés ou modifie les propriétés existantes de l'objet, et renvoie l'objet
Object.defineProperty(obj,prop,descriptor);
Object.defineProperties(obj,props)
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:Valeur booléenne, indiquant si la valeur de l'attribut cible peut être modifiée. Lorsque l'attribut inscriptible est vrai, la valeur peut être modifiée par l'opérateur d'affectation. La valeur par défaut est false
var obj={}; Object.defineProperty(obj,'attr',{ value:'前端', writable:false }); console.log(obj.attr); obj.attr=100; console.log(obj.attr);3. configurable : valeur booléenne, indiquant si le descripteur de l'attribut cible peut être modifié. Lorsque la valeur configurable de l'attribut est vraie, le descripteur d'attribut peut être modifié et l'attribut peut également être supprimé de l'objet correspondant. La valeur par défaut est 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 : valeur booléenne, indiquant si l'attribut cible peut être traversé. Lorsque l'énumérable de la propriété est vrai, la propriété peut apparaître dans la propriété d'énumération de l'objet. La valeur par défaut est false
Si la valeur énumérable de l'attribut de l'objet est fausse, les trois opérations suivantes ne peuvent pas obtenir l'attribut :
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));descripteur d'attribut Accesseur En plus d'être définies directement, les propriétés d'un objet peuvent également être définies à l'aide d'accesseurs. Parmi eux, setter est une fonction de sauvegarde de valeur, utilisez set dans le descripteur d'attribut ; getter est une fonction de prise de valeur, utilisez get
var obj=Object.defineProperty({},'attr',{ get:function(){ return '前端'; }, set:function(){ console.log('setter:'+value); } }); console.log(obj.attr); obj.attr=100;en plus de la méthode d'écriture d'accesseur ci-dessus. , JavaScript également Les méthodes d'écriture suivantes sont fournies :
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);
相关推荐:
浅谈Javascript中Object与Function对象_javascript技巧
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!