recherche
Maisoninterface Webjs tutorielExplication détaillée des compétences de sérialisation_javascript d'objet JavaScript

1. Qu'est-ce que la sérialisation d'objets ?

La sérialisation d'objets fait référence à la conversion de l'état d'un objet en chaîne (d'après ma compréhension de débutant, il semble que certains livres disent aussi cela, c'est facile à comprendre !) ;

La sérialisation est le processus de conversion des informations d'état d'un objet sous une forme pouvant être stockée ou transmise (de "Baidu Encyclopedia - Serialization", très académique et légèrement haut de gamme

) ;

2. Pourquoi y a-t-il une sérialisation des objets ?

Tout dans le monde a une raison d’exister. Pourquoi y a-t-il une sérialisation des objets ? Parce que les programmeurs en ont besoin. Puisqu'il s'agit d'une sérialisation d'objet, commençons par un objet :

var obj = {x:1, y:2};

Lorsque ce code est exécuté, le contenu de l'objet obj sera stocké dans un morceau de mémoire, et obj lui-même ne stocke que le mappage de l'adresse de cette mémoire. En termes simples, l'objet obj est quelque chose que notre programme conserve en mémoire lorsque l'ordinateur est allumé. Si notre programme s'arrête ou si l'ordinateur est éteint, l'objet obj n'existera plus. Alors comment sauvegarder le contenu de l'objet obj sur le disque (c'est-à-dire le conserver en cas de coupure de courant) ? À ce stade, vous devez sérialiser l'objet obj, c'est-à-dire convertir le contenu de obj sous forme de chaîne, puis l'enregistrer sur le disque. De plus, comment envoyer le contenu de l'objet obj au client via le protocole HTTP ? Oui, vous devez d'abord sérialiser l'objet obj, puis le client désérialise (c'est-à-dire restaure la chaîne sur un objet) pour analyser l'objet correspondant en fonction de la chaîne reçue. Ce sont exactement les deux fonctions décrites dans "Baidu Encyclopedia - Serialization" - stockage et transmission.

3. Sérialisation d'objets en JavaScript

Le nom complet de JSON est "JavaScript Object Notation" - Notation d'objet JavaScript. ECMAScript 5 fournit les fonctions intégrées JSON.stringify() et JSON.parse() pour sérialiser et restaurer les objets JavaScript. Ils sont également faciles à utiliser :

Comme vous pouvez le voir, il n'y a pas de contenu y:undéfini dans exampleStr et exampleObj2. Cela montre que : La syntaxe JSON est un sous-ensemble de la syntaxe JavaScript. Elle ne peut pas représenter toutes les valeurs en JavaScript. Pour les attributs qui ne sont pas pris en charge par la syntaxe JSON, ils seront omis après la sérialisation. Les règles détaillées sont les suivantes :

  • ① Pour les cinq types primitifs en JavaScript, la syntaxe JSON prend en charge quatre types : les nombres, les chaînes, les valeurs booléennes et null 
  • .
  • ②Le résultat de la sérialisation NaN, Infinity et -Infinity est nul
  • ③La syntaxe JSON ne prend pas en charge les fonctions
  • ④En plus des objets RegExp et Error, la syntaxe JSON prend en charge tous les autres objets
  • ⑤Le résultat de la sérialisation de l'objet date est une chaîne au format ISO, mais JSON.parse() conserve toujours sa forme de chaîne et ne la restaurera pas en objet date
  • ⑥JSON.stringify() ne peut sérialiser que les propriétés propres énumérables de l'objet
Comme le montre l'exemple ci-dessus, si les règles ci-dessus sont respectées, la copie approfondie des objets peut également être réalisée via la sérialisation et la désérialisation des objets.

Ce qui précède présente les utilisations courantes de JSON.stringify() et JSON.parse(), mais ces deux méthodes ne sont pas aussi simples :

4. Version complète JSON.stringify()

1. Introduction

Sérialiser une valeur primitive, un objet ou un tableau

2.Résumé

JSON.stringify(o[, filter][, indent])

3. Paramètres

o, la valeur, l'objet ou le tableau d'origine à convertir en chaîne JSON

Filtre, paramètre facultatif, un tableau ou une fonction

retrait, paramètre facultatif, une valeur ou une chaîne

4. Retour

Une chaîne au format JSON, représentant la valeur de o, qui a passé le filtrage et est formatée selon l'indentation

5. Description

 ①Lorsque l'objet o lui-même a une méthode toJSON(), JSON.stringify() appellera la méthode toJSON() de o et utilisera la valeur de retour de la méthode au lieu de l'objet lui-même pour la stringification

;

 ②Si le filtre existe et est une fonction, la valeur de retour de la fonction sera utilisée comme valeur de retour de la méthode JSON.stringify(). Et cette fonction reçoit deux paramètres, le premier paramètre est une chaîne vide et le deuxième paramètre est l'objet o.

 ③Si le filtre existe et est un tableau de chaînes (si le tableau contient des nombres, les nombres seront automatiquement convertis en chaînes), alors si certains noms d'attributs de l'objet o ne sont pas dans ce tableau, ceux-ci seront sérialisés lors de la sérialisation. les attributs sont omis et l'ordre des attributs dans la chaîne renvoyée sera cohérent avec l'ordre des attributs dans le tableau

;

  ④JSON.stringify()返回的通常是不带任何空格或换行符的字符串。如果想输出可读性更好的字符串,需要指定第三个参数。如果指定的第三个参数是介于1~10之间的值,则JSON.stringify()会在每一“层级”的输出插入换行符和指定个数的空格。如果指定的第三个参数是非空字符串,则JSON.stringify()会插入换行符和该字符串(只取前十个字符)来缩进层级;

五.完整版JSON.parse()

1.简介

  解析JSON格式的字符串

2.概要

  JSON.parse(s[, reviver])

3.参数

  s,要解析的字符串

  reviver,可选参数,用来转换解析值的可选函数

4.返回

  一个对象、数组或原始值。该返回值是从s中解析的(还有可能被reviver修改过);

5.描述

  ①如果指定了reviver函数,该函数会为从s中解析的每一个原始值(不是包含这些原始值的对象或数组)调用一次。调用reviver时带有两个参数,第一个参数是属性名——对象的属性名或转换成字符串的数组序号,第二个参数是对象属性或数组元素的原始值。并且,reviver函数的返回值将作为JSON.parse()的返回值;

以上就是关于JavaScript对象序列化的相关内容,希望对大家的学习有所帮助。

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Python vs JavaScript: communauté, bibliothèques et ressourcesPython vs JavaScript: communauté, bibliothèques et ressourcesApr 15, 2025 am 12:16 AM

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

De C / C à JavaScript: comment tout cela fonctionneDe C / C à JavaScript: comment tout cela fonctionneApr 14, 2025 am 12:05 AM

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

Moteurs JavaScript: comparaison des implémentationsMoteurs JavaScript: comparaison des implémentationsApr 13, 2025 am 12:05 AM

Différents moteurs JavaScript ont des effets différents lors de l'analyse et de l'exécution du code JavaScript, car les principes d'implémentation et les stratégies d'optimisation de chaque moteur diffèrent. 1. Analyse lexicale: convertir le code source en unité lexicale. 2. Analyse de la grammaire: générer un arbre de syntaxe abstrait. 3. Optimisation et compilation: générer du code machine via le compilateur JIT. 4. Exécuter: Exécutez le code machine. Le moteur V8 optimise grâce à une compilation instantanée et à une classe cachée, SpiderMonkey utilise un système d'inférence de type, résultant en différentes performances de performances sur le même code.

Au-delà du navigateur: Javascript dans le monde réelAu-delà du navigateur: Javascript dans le monde réelApr 12, 2025 am 12:06 AM

Les applications de JavaScript dans le monde réel incluent la programmation côté serveur, le développement des applications mobiles et le contrôle de l'Internet des objets: 1. La programmation côté serveur est réalisée via Node.js, adaptée au traitement de demande élevé simultané. 2. Le développement d'applications mobiles est effectué par le reactnatif et prend en charge le déploiement multiplateforme. 3. Utilisé pour le contrôle des périphériques IoT via la bibliothèque Johnny-Five, adapté à l'interaction matérielle.

Construire une application SaaS multi-locataire avec next.js (intégration backend)Construire une application SaaS multi-locataire avec next.js (intégration backend)Apr 11, 2025 am 08:23 AM

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

JavaScript: Explorer la polyvalence d'un langage WebJavaScript: Explorer la polyvalence d'un langage WebApr 11, 2025 am 12:01 AM

JavaScript est le langage central du développement Web moderne et est largement utilisé pour sa diversité et sa flexibilité. 1) Développement frontal: construire des pages Web dynamiques et des applications à une seule page via les opérations DOM et les cadres modernes (tels que React, Vue.js, Angular). 2) Développement côté serveur: Node.js utilise un modèle d'E / S non bloquant pour gérer une concurrence élevée et des applications en temps réel. 3) Développement des applications mobiles et de bureau: le développement de la plate-forme multiplateuse est réalisé par réact noral et électron pour améliorer l'efficacité du développement.

L'évolution de JavaScript: tendances actuelles et perspectives d'avenirL'évolution de JavaScript: tendances actuelles et perspectives d'avenirApr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP