JavaScript:JSON、三种包装类

JOSN:

我们希望可以将一个对象在不同的语言中进行传递,

以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式

JSON(JavaScript Object Notation)

- JS的对象表示法

- JSON实际上就是一个字符串,它的语法格式和JS对象的语法基本上是一致

通过JSON表示的对象可以在任意的语言中使用

- JSON的语法和JS对象的语法基本一样,不同点在于,

JSON中属性名必须加引号,而且必须是双引号

JSON中的字符串也必须使用双引号

最后一个属性后边不能再有逗号

- JSON的类型:

JSON对象 {}

JSON数组 []

- JSON所支持的属性的类型:

数字

字符串(使用双引号)

布尔值

空值(null)

对象

数组

IE7 及浏览器7以下不支持

var obj = {name:"孙悟空", age:18, gender:"男"};

var json = '{"name":"孙悟空", "age":18, "gender":"男", "haha":null, "abc":{}, "bcd":[]}';

var jsonArr = '[1, 2, 3]';

// console.log(typeof json);

// console.log(typeof jsonArr);

/*JSON 工具类,用来操作JSON数据的JSON.parse() 用来将一个JSON转换为JS对象(数组)JSON.stringify() 用来将一个JS对象转换为一个JSON字符串*/// 将一个JSON字符串转换为JS对象// var o = JSON.parse(json);// var arr = JSON.parse(jsonArr);// json = '{"name":"孙悟空", "age":18, "gender":"男"}';// JSON.parse(json);var arr = [{name:"孙悟空", age:18, gender:"男"},{name:'猪八戒', age:28, gender:'男'},{name:'沙和尚', age:38, gender:'男'}];var arrStr = JSON.stringify(arr);// console.log(arrStr);var arr2 = [{name:'孙悟空'},{name:'猪八戒'}];// var arr3 = arr2.slice(); 浅复制// arr3[0].name = '哈哈';// console.log(arr2[0].name);// 可以通过JSON来完成对象的深复制var arr3 = JSON.parse(JSON.stringify(arr2));arr3[0].name = '哈哈';console.log(arr2[0].name);

三种包装类:

在JS中,给我们提供了三个包装类:

Number()

String()

Boolean()

- 这三个包装类可以用于创建出一个基本数据类型的对象

- 可以通过 new Number()、 new String()、 new Boolean()

来创建一个基本数据的对象,但是千万不要这么用

- 当我们去调用一个基本数据类型的属性或方法时,由于值中并不具备属性和方法,

所有JS的引擎会临时通过包装类来将其转换为对象,然后通过该对象调用属性或方法。

- 这样就意味着,可以直接通过值来调用其包装类的方法

var a = 10; // 基本数据类型的值var b = {}; // 是一个对象// b.name = '孙悟空';// b.sayHello = function () {// console.log('哈哈哈哈~~');// };// var result = a.toString();// console.log(result);a.name = 'haha';a.age = 18;console.log(a.name, a.age);/*在JS中,给我们提供了三个包装类:Number()String()Boolean()- 这三个包装类可以用于创建出一个基本数据类型的对象- 可以通过 new Number()、 new String()、 new Boolean()来创建一个基本数据的对象,但是千万不要这么用- 当我们去调用一个基本数据类型的属性或方法时,由于值中并不具备属性和方法,所有JS的引擎会临时通过包装类来将其转换为对象,然后通过该对象调用属性或方法。- 这样就意味着,可以直接通过值来调用其包装类的方法*/var c = 10; //基本数据类型的10(原始值)// 对象类型的数字具有原始值数字的所有功能,并且它可以直接存储属性和方法// 但是在开发中,我们绝对绝对不要这么使用var d = new Number(10); // 对象类型的10// console.log(d+''); //10// d.name = '哈哈';// d.age = 18;// console.log(d.name, d.age);// console.log(d + 33);var f = new Number(33);var g = new Number(33);// 比较对象形式基本类型数据时,比较的是对象的内存地址// console.log(f == g);// console.log(typeof f);var str = 'hello';var reuslt = str.endsWith('o');

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读笔记】Contrastive Learning with Stronger Augmentations

Contrastive Learning with Stronger Augmentations 摘要 基于提供的摘要,该论文的核心焦点是在对比学习领域提出的一个新框架——利用强数据增强的对比学习(Contrastive Learning with Stronger Augmentations,简称CLSA)。以下…

【Jvm】性能调优(上)线上问题排查工具汇总

文章目录 一.互联网概念1.产品闭环和业务闭环2.软件设计中的上游和下游3.JDK运行时常量池 二.CPU相关概念1.查询CPU信息2.CPU利用率(CPU utilization)和 CPU负载(CPU load)2.1.如何理解CPU负载2.2.top命令查看CPU负载均值2.3.CPU负…

Pytorch 配置 GPU 环境

1、Pytorch 深度学习跑代码的时候,因为简单的操作不适合cpu运行,我们更习惯用GPU加速代码。 本章将介绍怎么安装pytorch的gpu环境,以及常见的问题 关于conda的安装,参考之前文章:深度学习环境配置:Anaco…

初始树莓派 + VMware17 安装树莓派(Raspberry Pi 4B/5)

文章目录 树莓派入门 VMware17 安装树莓派(Raspberry Pi 4/5B)前言一、树莓派入门指南:从零开始探索树莓派树莓派4B和5对比 二、在VMware Workstation 17上安装树莓派4B/5操作系统:实现强大性能与便捷模拟工具准备开始安装树莓派1.创建一个虚拟机2. 选择…

PyCharm 取消所有断点

PyCharm 取消所有断点 1. Run -> View Breakpoints...2. Python Line Breakpoint3. Remove - DoneReferences 1. Run -> View Breakpoints… 2. Python Line Breakpoint ​​​ 3. Remove - Done References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

【web安全】渗透测试实战思路

步骤一:选目标 1. 不建议太小的公司(可能都是请别人来开发的,用现成成熟的框架) 2. 不建议一线大厂:腾讯,字节,阿里等,你懂的 3. 不建议政府部门,安全设备多&#xff…

Spring MVC(基于 Spring4.x)基础学习

一、SpringMVC概述 二、SpringMVC的HelloWorld 三、使用RequestMapping映射请求 四、映射请求参数&请求头 五、处理模型数据 六、视图和视图解析器 七、RESTful CRUD 八、SpringMVC表单标签&处理静态资源 九、数据转换&数据格式化&数据校验 十、处理JSON:使用…

如何在1Panel上偷渡HTTP/3

本文 首发于 Anyeの小站,转载请取得作者同意。 前言 简介 HTTP/3 的基础即谷歌多年探索的基于 UDP 的 QUIC 协议。与 TCP 相比,使用 UDP 可以提供更大的灵活性,并且可以使 QUIC 完全于用户空间中实现——对协议实现的更新不像 TCP 那样需要绑…

前端win10如何设置固定ip(简单明了)

1、右击这个 2、点击属性 3、双击协议版本4设置成以下就ok

原生微信小程序开发记录

1. 拿到项目 先构建 2.小程序与普通网页开发的区别 网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。网页开发者可以使用到各种浏览…

【HarmonyOS】鸿蒙开发之Slider组件——第3.5章

组件应用场景: 设备音量大小,调节屏幕亮度等需求 slider组件内options属性简介 value:滑动条当前进度值。 min:设置滑动条设置最小值。 max:设置滑动条设置最大值,默认为 100 。 step:设置滑动条滑动跳动…

【npm】npm镜像源及命令

淘宝镜像源 npm config set registry https://registry.npm.taobao.org (旧版,已到期) 淘宝中国镜像源 npm config set registry https://registry.npmmirror.com (新版) 腾讯云镜像源 npm config set registry h…

Linux命令-bzmore命令(查看bzip2压缩过的文本文件的内容)

说明 bzmore命令 用于查看bzip2压缩过的文本文件的内容,当下一屏显示不下时可以实现分屏显示。 语法 bzmore(参数)参数 文件:指定要分屏显示的.bz2压缩包。

Python从进阶到高级—通俗易懂版

Python从进阶到高级—通俗易懂版 # # Author : Mikigo # Time : 2021/12/23 # 一、简介 Python 进阶是我一直很想写的,作为自己学习的记录,过去自己在看一些代码的时候经常会困惑,看不懂,然后自己去查资料、看书籍&#xff0…

JAVA之HashMap详解

HashMap 1. 设计原理 HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中…

appium实现自动化测试原理

目录 1、Appium原理 1.1、Android Appium原理图文解析 1.1.2、原理详解 1.1.2.1、脚本端 1.1.2.2、appium-server 1.1.2.3、中间件bootstrap.jar 1.1.2.4、驱动引擎uiautomator 1.2、 IOS Appium原理 1、Appium原理 1.1、Android Appium原理图文解析 执行测试脚本全过…

C#,二进制数的按位交换(Bits swap)的算法与源代码

数字在指定位置指定位数的交换是常见算法。 1 源程序 using System; using System.Text; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer.Algorithm { public static partial class Algorithm_Gallery { /// <…

使用vite创建项目

NPM npm create vitelatest Yarn yarn create vite PNPM pnpm create vite Bun bunx create-vite 安装sass npm add -D sass 安装less npm add -D less vite官方中文文档&#xff1a;Vite | 下一代的前端工具链 (vitejs.dev)

Fabric V2.5 test-network启动日志分析

背景 分析Fabric网络的启动日志可以帮我们理解搭建区块链网络的过程。本文对输出日志进行详细的分析。 启动网络与创建通道 # verbose 可以输出更详细的日志。 ./network.sh up createChannel -verbose# 使用本机安装的docker and docker-compose Using docker and docker-c…

用实例详解Java中的类、对象、继承及多态性,一文理解Java类和对象、多态性的概念

Java中的类、对象、继承及多态性详解 Java作为一门面向对象的编程语言&#xff0c;其核心概念包括类、对象、继承以及多态性。这些概念是Java编程的基础&#xff0c;理解和掌握它们对于编写高效、可维护的Java代码至关重要。本文将结合实例详细讲解这些概念&#xff0c;并解释…