当前位置: 首页 > 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>

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

相关文章:

  • 动态会话日志记录 ngx_stream_log_module
  • 介电测试的基本原理与方法及应用领域
  • 摆脱拖延症的详细计划示例
  • C——五子棋小游戏
  • 坐标系概述
  • 湖北理元理律师事务所:企业债务危机的“止血”与“造血”平衡术
  • spark的处理过程-转换算子和行动算子
  • 视频编码原理讲解一:VCL层和NAL层的讲解
  • 在文档里如何引用在线SVG甘特图
  • 17.three官方示例+编辑器+AI快速学习webgl_buffergeometry_lines
  • NVIDIA Quantum-2 QM9700系列利用400G infinniband扩展数据中心智能交换机 NVIDIA Quantum-2 InfiniBand 交换机系列
  • 服务器带宽基础知识
  • 量子加密通信:守护信息安全的未来之盾
  • 从逻辑学视角探索数学在数据科学中的系统应用:一个整合框架
  • 2024年北理工Python123第六章编程题整理
  • Linux `kill` 指令深度解析与高级应用指南
  • C38-全局变量、局部变量及外部变量
  • 吴恩达机器学习笔记:单变量线性回归
  • 机器学习驱动的智能化电池管理技术与应用
  • 《Python星球日记》 第59天:生成对抗网络(GAN)
  • 习近平在中拉论坛第四届部长级会议开幕式的主旨讲话(全文)
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 福建宁德市长张永宁拟任设区市党委正职,曾获评全国优秀县委书记
  • 第二期人工智能能力建设研讨班在京开班,近40国和区域组织代表参加
  • 国际博物馆日中国主会场确定,北京将展“看·见殷商”等展览
  • 构筑高地共伴成长,第六届上海创新创业青年50人论坛在沪举行