首页 > 其他分享 >Js 常见数据类型及判断方法及手写深拷贝

Js 常见数据类型及判断方法及手写深拷贝

时间:2023-05-31 21:57:02浏览次数:35  
标签:obj 数据类型 Js typeof key 手写 null 拷贝 result

常见 值 类型:undefined、String、Number、boolean、Symbol.

常见 引用类型:Array、Object、function(特殊引用类型,单不用于存储数据,所以  “没有拷贝、复制函数”  这说法)、null(特殊引用类型,指针指向为空地址)

判断数据类型的方法:

  1. typeof 运算符
  2. let a; 
    const string = 'abc';
    const n = 100;
    const b = true;
    const s = Symbol('s');
    
    typeof a; //  'undefined'
    typeof string;  //  'string'
    typeof n; //  'number'
    typeof b; //  'boolean'
    typeof s; //  'symbol'
    typeof function (){}; //  'symbol'
    
    typeof null; //  'object'
    typeof {}; //  'object'
    typeof []; //  'object'

     

  3.  

  4. /**
 * 深拷贝
 * @param {Object} obj 要拷贝的对象
 */
function deepClone(obj = {}) {
if (typeof obj !== 'object' || obj == null) { // obj 是 null ,或者不是对象和数组,直接返回 return obj } // 初始化返回结果 let result if (obj instanceof Array) { result = [] } else { result = {} } for (let key in obj) { // 保证 key 不是原型的属性 if (obj.hasOwnProperty(key)) { // 递归调用!!! result[key] = deepClone(obj[key]) } } // 返回结果 return result }

 

标签:obj,数据类型,Js,typeof,key,手写,null,拷贝,result
From: https://www.cnblogs.com/playforkeeps/p/17447299.html

相关文章

  • Redis常用数据类型
    一、Redis键(key)keys*查看当前库所有key(匹配keys*1)existskey 判断某个key是否存在typekey查看key类型delkey 删除keyunlinkkey根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除操作会在后续异......
  • 有JSDoc还需要TypeScript吗
    这听起来是不是很耳熟:你想写一个小型脚本,不管是为页面、命令行工具,还是其他什么类型。你从JavaScript开始,直到你想起写代码时没有类型是多么痛苦。所以你把文件从.js重命名为.ts。然后意识到你已经打开了一个麻烦的玩意儿。如果你在为一个网站或一个库写代码,你就需要引入编译的步......
  • threejs绘制平面多边形
    在Three.js中,可以使用geometry对象和geometryMaterial对象来创建和渲染多边形几何体。下面是一个绘制多边形平面的示例代码: //创建一个立方体几何体varcubeGeometry=newTHREE.BoxGeometry(0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5);......
  • 当鼠标滑过文本框自动选中输入框内容JS代码
    代码:<html><head><title>响应鼠标自动选中文本框内容</title></head><body><inputid="a"type="text"value="请输入搜索词"οnmοuseοver="selectInputContent(this.id)"/><scripttype="text/......
  • 利用JSP交互式打印表格
    问题:在客户端输入要打印表格的行数rows和列数cols,然后经过服务端处理打印rows*cols的表格,打印数据为i*j。html部分:文件名:input.html<html><head><title>Hello</title></head><body><formaction="input.jsp"method="post"><tablebord......
  • JSP中四种属性范围
    在JSP中提供了四种属性的保存范围,所谓属性保存范围,指的就是一个设置的对象,可以在多少个页面中保存并继续使用。四种属性范围:pageContext     在一个页面中保存属性,跳转之后无效。request             只在一次请求中保存,服务器跳转之后依然有效。session  ......
  • three.js 导入模型合并为一个
    导入的模型文件是个组,里面有多个模型,需要合并为一个,方便操作参考文章https://blog.csdn.net/weixin_52125363/article/details/122454894https://blog.csdn.net/u012483043/article/details/106465465/https://zhuanlan.zhihu.com/p/467005893constobjLoader=newOBJLoader()......
  • MySQL之常用数据类型
    一:MySQL中基本数据类型MySQL数据库表中的每一列都必须具有名称和数据类型。据类型是一个标签,它可以告知存储什么类型的数据,它也标识了SQL如何与存储的数据进行交互。MySQL数据库支持所有标准SQL数值数据类型,涉及大概11种类MySQL数据类型。整数类型:TINYINT、SMALLINT、MED......
  • JS 判断域名并跳转到指定页面
    判断访问指定域名,进行页面跳转<!DOCTYPEhtml><html><head> <title>正在玩命加载中……</title> <!--判断来路域名自动跳转--> <scripttype="text/javascript"> varhref=location.href;//获取当前请求路径if(href.indexOf("vi......
  • Three.js入门
    Three.js的核心五步就是:1.设置three.js渲染器2.设置摄像机camera3.设置场景scene4.设置光源light5.设置物体object1.设置three.js渲染器三维空间里的物体映射到二维平面的过程被称为三维渲染。一般来说我们都把进行渲染操作的软件叫做渲染器。具体来说要进行下面这些处理。(1......