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

Html5新特性_js 给元素自定义属性_json 详解_浅克隆与深克隆

文章目录

  • 1. html5新特性
  • 2.用 js 给元素自定义属性
  • 3.json
    • 3.1 json与普通对象的区别
    • 3.2 json对象与 js对象的转化
  • 4.浅克隆和深克隆

1. html5新特性

html5中引入了新的特性(新的标签),下面的新标签是新的结构标签,不过不太常用

  • header 头部
  • footer 页尾部
  • nav 导航内容
  • section 文章中的一块内容
  • aside 侧边框

接下来,介绍input新标签

通过type属性控制,输入框内容,通过value控制默认内容,maxlength 是最长位数

 <!-- text 文本类型 --><input type="text"><br><!-- color 调色板  --><input type="color"><br><!-- date 日期 --><input type="date" value="2025-05-30"><br><!-- time 时间 --><input type="time" value="13:30"><br><!-- search 搜索 --><input type="search"><br><!-- range 进度条 --><input type="range"><br><!-- tel 手机号 --><input type="tel" maxlength="11"><br><!-- file 文件 --><input type="file">

在这里插入图片描述

2.用 js 给元素自定义属性

注意这个自定义属性,不是 css 中 的属性,是指一个对象的设置的新的变量,和 css 中属性不是一个概念
下面 dom 的意思是我们通过 dom 下方法取得某个具体对象的统一写法

html5 中新引入了 dateset 的方法,Attribute 的写法早已有之

  • 设置属性
    dom.dateset.属性名=‘属性值’
    dom.setAttribute(‘属性名’,‘属性值’)
  • 读取属性
    dom.dateset.属性名
    dom.getAttribute(“属性名”)

实例如下:
操作 DOM 元素,必须先用 JS 获取它

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box{width: 100px;height: 100px;border: 3px solid black;}</style>
</head>
<body><div class="box">box</div><script>var box=document.getElementsByClassName("box")[0];//新建属性box.dataset.width="500";//取得元素属性console.log(box.dataset.width);</script>
</body></html>

输出结果:500

3.json

3.1 json与普通对象的区别

JSON 对象 vs 普通 JavaScript 对象的区别:
在这里插入图片描述
简单来说,json 会把普通对象变为字符串,方便进行数据交换.但是普通对象中的函数,未定义的东西,json 是不管的.

json 对象的定义:

// json对象
var 名字 = '{"属性名":“属性值”}'
//注意:单引包双引 或者 双引包单引

3.2 json对象与 js对象的转化

// 将json对象如何转成js对象
var newObj1 = JSON.parse(obj1);
// 将js对象转成json对象
var newObj = JSON.stringify(obj);

parse:英文含义为语法分析

实例如下:

<script>
// 1.声明一个新的 js 对象
var obj = {
name:'Tom',
age:11,
telephone:"123124"
}
//2.将 js 对象转换为 json 对象
var newobj=JSON.stringify(obj);
console.log(obj);
console.log(newobj);
</script>

在这里插入图片描述

4.浅克隆和深克隆

浅克隆是指,那些对象中的引用对象,例如(对象,数组),会直接修改他们原本的值,不是真正意义的另一个,而是共用一个地址.

手动模拟浅克隆:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head><body><script>const original = {name: "Alice",age: 25,info: {   //information 的简写city: "Beijing"}};const shallowCopy = {};for (let key in original) {shallowCopy[key] = original[key]; // 不过滤,直接复制}shallowCopy.info.city="xian";console.log(original.info.city);console.log(shallowCopy.info.city);</script>
</body></html>

在这里插入图片描述
深克隆讲解:

深克隆指的是:不仅复制对象的第一层属性,还会递归地复制所有嵌套的对象和数组,确保新对象和原对象之间完全独立、互不影响。

手动递归实现深克隆:

 <script>const original = {name: "Alice",age: 25,info: {   //information 的简写city: "Beijing"}};function deepClone(obj) {if (typeof obj !== 'object') return obj;const clone = Array.isArray(obj) ? [] : {};//判断是对象还是数组for (let key in obj) {clone[key] = deepClone(obj[key]); }return clone;}var deep=deepClone(original);deep.info.city="xian";console.log(original.info.city);console.log(deep.info.city);</script>

为什么要区分数组和对象?
因为有些方法数组能用,假如你都是按照对象方法进行拷贝的,就会让一些原本能用的方法失效
在这里插入图片描述

http://www.xdnf.cn/news/405901.html

相关文章:

  • 模型上下文协议(MCP):AI的“万能插座”
  • Halcon案例(一):C#联合Halcon识别路由器上的散热孔
  • 【Vue3】使用vite创建Vue3工程、Vue3基本语法讲解
  • Windows 添加 hosts 映射
  • 零碳园区能源系统-多能互补体系
  • 星海智算云平台部署GPT-SoVITS模型教程
  • 傲云源墅:以五傲价值重构北京主城别墅格局
  • Spring MVC 和 Spring Boot 是如何访问静态资源的?
  • MySQL数据库表的约束
  • 反弹shell再入门
  • MySQL查询优化100条军规
  • 深度解析RagFlow:本地大模型驱动的高效知识库应用搭建指南
  • Java MVC
  • nRF5_SDK_17.1.0_ddde560之ble_app_uart_c 出错
  • [Java实战]Spring Boot 整合 Session 共享(十七)
  • LintCode第42题-最大子数组 II
  • 《Vuejs设计与实现》第 5 章(非原始值响应式方案) 中
  • OpenCV 的 CUDA 模块中用于将一个多通道 GpuMat 图像拆分成多个单通道图像的函数split()
  • 【AI News | 20250512】每日AI进展
  • 一键生成达梦、Oracle、MySQL 数据库 ER 图!解锁高效数据库设计!
  • 【LeetCode】49.字母异位词分组
  • 典籍知识问答重新生成和消息修改Bug修改
  • 从零搭建AI工作站:Gemma3大模型本地部署+WebUI配置全套方案
  • sqlmap使用入门
  • Linux 系统中设置开机启动脚本
  • AAAI-2025 | 中科院无人机导航新突破!FELA:基于细粒度对齐的无人机视觉对话导航
  • 【JAVA】业务系统订单号,流水号生成规则工具类
  • python练习-20250512
  • C++23 views::slide (P2442R1) 深入解析
  • AnaTraf:深度解析网络性能分析(NPM)