当前位置: 首页 > news >正文

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创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

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

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

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

相关文章:

  • 在SpringBoot中@PathVariable与@RequestParam的区别
  • IO线程-day1
  • compile error ESP32cam.h no such file or directory
  • sql常用语句小结
  • 服务器防火墙设置教程
  • SQL查询数据是否存在
  • 5G网络eMBB、uRLLC、mMTC
  • 【手写数据库toadb】数据字典缓存的实现方法和接口分享,面向对象设计思想,接口单一化
  • Sentinel注解@SentinelResource详解
  • springboot197基于springboot的毕业设计系统的开发
  • LeetCode 0429.N 叉树的层序遍历:广度优先搜索(BFS)
  • MongoDB聚合操作符:$acos
  • OpenAI全新发布的Sora,到底意味着什么?
  • Sora爆火,普通人的10个赚钱机会
  • Transformer实战-系列教程15:DETR 源码解读2(整体架构:DETR类)
  • Cumulo 的 ClojureScript 模块已经成型
  • IDEA 插件开发入门教程
  • JavaScript设计模式系列一:工厂模式
  • javascript数组去重/查找/插入/删除
  • Js基础——数据类型之Null和Undefined
  • Mithril.js 入门介绍
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PermissionScope Swift4 兼容问题
  • spring boot下thymeleaf全局静态变量配置
  • XML已死 ?
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 三栏布局总结
  • 探索 JS 中的模块化
  • 小程序开发中的那些坑
  • 小试R空间处理新库sf
  • 正则学习笔记
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • k8s使用glusterfs实现动态持久化存储
  • zabbix3.2监控linux磁盘IO
  • 交换综合实验一
  • 说说我为什么看好Spring Cloud Alibaba
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # Apache SeaTunnel 究竟是什么?
  • #14vue3生成表单并跳转到外部地址的方式
  • #DBA杂记1
  • #ifdef 的技巧用法
  • $.ajax()参数及用法
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (6)设计一个TimeMap
  • (C语言)fgets与fputs函数详解
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (力扣)1314.矩阵区域和