paramètre:
(1) OBJ
Requis. Le nom de la variable à laquelle l'objet objet est attribué.
(2) valeur
Facultatif. Tout type de données primitif JavaScript (numéro, booléen ou chaîne). Si la valeur est un objet, l'objet renvoyé n'est pas modifié. Si la valeur est nul, "non définie" ou "non fournie", un objet sans contenu est créé.
Méthodes d'objet objet
Lorsque l'objet est utilisé comme constructeur, il peut accepter un paramètre. Si le paramètre est un objet, il renverra directement l'objet; S'il s'agit d'une valeur du type d'origine, il renverra l'objet wrapper correspondant à la valeur. En utilisant cela, vous pouvez écrire une fonction qui détermine si une variable est un objet.
fonction isObject (value) {return value === objet (valeur);}Il existe deux façons de déployer une méthode sur un objet d'objet.
Déployer dans l'objet objet lui-même
Déploier dans objet.prototype objet
La méthode Object.Keys est très similaire à la méthode objet.getownpropertyNames et est généralement utilisée pour traverser les propriétés d'un objet. Leurs paramètres sont tous un objet, et ils renvoient tous un tableau, et les membres du tableau sont tous des noms d'attribut de l'objet lui-même (plutôt qu'hérité). La différence entre les deux est que le premier ne renvoie que des attributs énumérables, tandis que le second renvoie également les noms d'attribut non énumérables. Étant donné que le tableau a une longueur d'attribut inénumérable, le tableau est généralement traversé avec objet. clés.
JavaScript ne fournit pas de méthode pour calculer le nombre de propriétés d'objet, qui peuvent être obtenues via Object.Keys (o) .length et object.getownpropertyNames (o) .length.
La méthode object.observe est utilisée pour observer les changements dans les propriétés de l'objet.
Méthodes liées à la chaîne prototype:
Object.create (): générer un nouvel objet et le prototype de l'objet.
Object.getPrototypeOf (): obtient l'objet prototype de l'objet.
Méthodes d'objet d'instance d'objet
Object.prototype.valueof (): La fonction de la valeur de la méthode est de renvoyer la valeur d'un objet, et par défaut, l'objet lui-même est renvoyé. L'objectif principal de cette méthode est que cette méthode sera appelée par défaut lorsque JavaScript convertit automatiquement le type.
Object.prototype.toString (): La fonction de la méthode ToString est de renvoyer la forme de chaîne d'un objet. Lorsqu'un objet est utilisé pour l'ajout de chaîne, la méthode TOSTRING est automatiquement appelée.
À l'aide de la méthode d'appel, vous pouvez appeler la méthode object.prototype.tostring sur n'importe quelle valeur pour déterminer le type de cette valeur. La valeur de retour de la méthode TOSTRING de différents types de données est la suivante:
Valeur: return [numéro d'objet]
String: return [Object String]
Booléen: retourne [objet boolean]
Undefined: return [objet indéfini]
null: return [objet null]
Objet: renvoie "[objet" + le nom du constructeur + "]"
Object.prototype.toString.call (2) // "[Numéro d'objet]" Object.prototype.tostring.call ('') // "[String d'objet]"À l'aide de cette fonctionnalité, vous pouvez écrire une fonction de jugement de type qui est plus précise que le type d'opérateur.
var type = fonction (o) {var s = object.prototype.tostring.call (o); return s.match (// [objet (. *?) /] /) [1] .tolowerCase ();}; type ({}); // "objet" type ([]); // type "array" (5); // "nombre"Sur la base de la fonction de type ci-dessus, vous pouvez également ajouter une méthode qui détermine spécifiquement un certain type de données.
['Null', 'Undefined', 'Object', 'Array', 'String', 'Number', 'Boolean', 'Function', 'Regexp', 'Element', 'Nan', 'Infinite']. Foreach (fonction (T) {Type ['IS' + T] = fonction (o) {return type (o) === T.tolowercase (); };}); type.isObject ({}); // trueType.isnumber (nan); // falsetype.iselement (document.CreateElement ('div')); // vraiLe modèle d'attribut de l'objet
Dans JavaScript, chaque attribut a un objet Attributs correspondant, qui enregistre certaines méta-informations de l'attribut. Utilisez la méthode object.getownpropertyDescriptor pour lire l'objet Attributs de l'attribut P de l'objet O. L'objet Attributs contient la méta-information suivante:
Valeur: représente la valeur de cette propriété, qui n'est pas définie par défaut (tant que l'un des écrivains et configurables est vrai, il peut être modifié).
Writable: indique si la valeur de cette propriété peut être modifiée, la valeur par défaut est vraie.
Énumérable: indique si l'attribut est énumérable, la valeur par défaut est vraie, c'est-à-dire que l'attribut apparaîtra dans les opérations telles que pour… dans et object.keys (). D'une manière générale, les propriétés natives du système (c'est-à-dire les propriétés non définies par l'utilisateur) ne sont pas énumérées.
Indique la "configurabilité", par défaut est vrai. S'il est défini sur FAUX, cela signifie que l'attribut ne peut pas être supprimé et que l'objet Attributs ne doit pas être modifié (sauf l'attribut de valeur, si le scénario est vrai, la valeur peut toujours être modifiée), c'est-à-dire que l'attribut configurable contrôle l'écrivabilité de l'objet Attributs.
La fonction de valeur (Getter) représentant cette propriété, par défaut non définie.
La fonction de stockage de valeur (setter) représentant cette propriété, par défaut non définie.
var o = {p: 'a'}; object.getownPropertyDescriptor (o, 'p'); // objet {// valeur: "a", // withing: true, // enmelable: true, // configurable: true //}La méthode object.defineproperty vous permet de définir ou de modifier un attribut en définissant un objet d'attribut, puis à retourner l'objet modifié. Le format est le suivant:
Object.defineproperty (objet, propriétéName, attributeObject)
La méthode object.defineproperty accepte trois paramètres, le premier est l'objet où la propriété est située, la seconde est le nom de la propriété (il devrait être une chaîne), et le troisième est l'objet de description de la propriété. Grâce à cette méthode, les valeurs par défaut des propriétés écrivatives, configurables et énumérables de l'objet de propriété sont fausses.
Object.defineProperty (o, "p", {value: "bar"}); object.getownpropertyDescriptor (o, 'p'); // objet {// value: "bar", // writeable: false, // énuable: false, // configurable: false //}Si plusieurs propriétés sont définies ou modifiées immédiatement, vous pouvez utiliser la méthode objet.defineproperties. Il convient de noter qu'une fois que la fonction de valeur est obtenue (ou le jeu de fonctions de stockage de valeur), l'écrivable ne peut pas être défini sur true, ou l'attribut de valeur est défini en même temps, sinon une erreur sera signalée.
var o = object.defineProperties ({}, {p1: {value: 123, énumérable: true}, p2: {value: "ABC", énumérable: true}, p3: {get: function () {return this.p1 + this.p2}, énumérable: true, configurable: true}}));Énumérable peut être utilisé pour définir la propriété "secrète". Si l'énumérable d'une propriété est faux, la boucle for..in, la méthode object.keys et la méthode json.stringify n'obtiendront pas la propriété, mais sa valeur peut être obtenue directement via O.XX.
La différence entre la méthode FOR… en boucle et l'objet. Si vous avez besoin d'obtenir toutes les propriétés de l'objet lui-même, quelle que soit la valeur de l'énumérable, vous pouvez utiliser la méthode objet.getownpropertyNames.
La configurabilité détermine si une variable peut être supprimée. Lorsqu'une variable est déclarée à l'aide de la commande var, la variable configurable est fausse et lorsqu'une variable est déclarée en utilisant la commande var (ou une variable est déclarée en utilisant l'affectation d'attribut), la configurabilité de la variable est vraie. Cela signifie que Delete ne peut supprimer que les propriétés de l'objet.
var a1 = 1; // configurable: falsea2 = 1; // configurable: vrai (équivalent à ce.A2 = 1)
En plus de la définition directe, les propriétés peuvent également être définies à l'aide des fonctions d'accessoires. Parmi eux, la fonction de stockage de valeur est appelée setter, qui utilise la commande set; La fonction d'acquisition de valeur est appelée Getter, qui utilise la commande get. En utilisant la fonction d'accès, la liaison bidirectionnelle entre les objets de données et les objets DOM peut être réalisée.
Object.defineProperty (utilisateur, 'name', {get: function () {return document.getElementById ("foo"). Value}, set: function (newValue) {document.getElementById ("foo"). Value = newValue;}, configurable: true});État de l'objet de contrôle
JavaScript fournit trois méthodes pour contrôler avec précision l'état de lecture et d'écriture d'un objet et empêcher l'objet de changer. La couche de protection la plus faible est la prévention, suivie du sceau, le gel le plus fort.
La méthode object.pretentextensions peut rendre un objet incapable d'ajouter de nouvelles propriétés, mais il peut utiliser la commande delete pour supprimer ses propriétés existantes. La méthode object.isextenible peut être utilisée pour vérifier si un objet peut être ajouté.
La méthode Object.Seal empêche un objet d'ajouter de nouvelles propriétés ou de supprimer les anciennes propriétés. Object.Seal définit également l'attribut configurable de l'objet Attributs des attributs existants à FALSE, afin que l'objet Attributs ne puisse plus être modifié. La méthode object.isaled est utilisée pour vérifier si un objet utilise la méthode objet.SEAL.
La méthode Object.Freeze peut rendre un objet incapable d'ajouter de nouveaux attributs, de supprimer les anciens attributs et de modifier la valeur des attributs, ce qui fait de cet objet une constante. La méthode object.isfrozen est utilisée pour vérifier si un objet utilise la méthode objet.freeze ().
Utilisez les méthodes ci-dessus pour verrouiller l'écriture de l'objet, mais vous pouvez toujours y ajouter des propriétés en modifiant l'objet prototype de l'objet.
var o = new object (); object.preventextensions (o); var proto = object.getprototypeof (o); proto.t = "bonjour"; ot // bonjour
Une solution consiste également à geler le prototype.
var o = object.seal (object.create (object.freeze ({x: 1}), {y: {value: 2, writeable: true}})); object.getprototypeof (o) .t = "hello"; ot // undefinedPS:
Un objet d'objet est inclus dans tous les autres objets JavaScript; Toutes ses méthodes et propriétés sont disponibles pour tous les autres objets. Les méthodes peuvent être redéfinies dans des objets définis par l'utilisateur et appelés par JavaScript au moment approprié. La méthode TOSTRING est un exemple d'une méthode d'objet fréquemment redéfinie.
Dans cette référence de langue, la description de chaque méthode d'objet inclut les informations d'implémentation par défaut et spécifiques à l'objet pour l'objet JavaScript interne.
En termes de compatibilité IE, le document MSDN de Microsoft est "Object Object a été introduit dans Internet Explorer avant Internet Explorer 6", alors ne vous inquiétez pas ~