web前端高级JavaScript - 对象的深合并与浅合并

本文探讨了JavaScript中对象的浅合并与深合并。在浅合并中,仅替换第一层的键值,而不处理子对象。而在深合并中,会递归地合并对象的每一层级。文章提供了具体的合并规则,并给出了代码实现,同时也注意到了对象自我引用可能导致的死循环问题。
摘要由CSDN通过智能技术生成

数据类型检测方法封装

在讲对象的深合并与浅合并前,我们先来封装几个数据类型检测的方法,便于后面使用。
以下所有封装的方法在 JQuery源码分析 - 数据类型检测方法封装(数字、对象、数组类数组)中已经有详细讲解。这里就不再多述。

  • 通用数据类型检测toType
var class2type = {
   };
var toString = class2type.toString;
var mapType = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object", "Error", "Symbol"];
mapType.forEach(function(name){
   
	class2type["[object "+name+"]"] = name.toLowerCase();
});
function toType(obj){
   
	if(obj == null) {
   
		return obj + "";
	};
	return typeof obj === "object" || typeof obj === "function" ?
		class2type[toString.call(obj)] || "object" : typeof obj;
}
  • 检测是否是纯对象isPlainObject
function isPlainObject(obj){
   
	var proto, Ctor;
	if(!obj || Object.prototype.toString.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值