这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战
-
什么是对象序列化
- 对象的状态转换成字符串
- 对象的状态信息转换为可以存储或传输的形式的过程
-
为什么会有对象序列化
- 希望把对象obj的内容保存在磁盘上 --- 对象obj序列化
- 序列化:obj的内容转换成一个字符串的形式,保存在磁盘上 ==存储==
- 反序列化:字符串还原成对象 ==传输==
-
JavaScript中的对象序列化 JSON.stringify() 和 JSON.parse() 规则: 1. 五种原始类型:JSON不支持undefined 2. 不支持函数 3. 除了RegExp、Error对象,JSON语法支持其他所有对象 4. JSON.stringify()只能序列化对象的可枚举的自有属性 5. NaN、Infinity和 -Infinity序列化的结果是null 6. 日期对象序列化的结果是ISO格式的字符串,但JSON.parse()依然保留它们字符串形态,并不会为其还原为日期对象
-
完整版JSON.stringify() ==序列化== 序列化原始值、对象、数组 -- ==o替代== JSON.stringify(o[可选参数,数组或函数][,可选参数,数值或字符串])
-
完整版JSON.parse() ==反序列化==
类数组对象:arguments
封装实参的对象arguments
为什么要有arguments
JavaScript并没有重载函数的功能,但Arguments对象能够模拟重载。 JavaScript中每个函数都有Arguments对象实例arguments arguments.length 为函数实参个数 arguments.callee 为引用函数自身
arguments特性
==arguments和function生死相依==
使用方法
跟数组一样使用
callee属性,返回正被执行的Function对象
==针对同个方法多处调用并且传递参数个数不一样时进行使用== var sum = function(n) { if (1 == n){ return 1; } else { return n + arguments.callee(n-1); } } alert(sum(6)); // 21
1. 利用arguments实现方法的重载
function add() {
var len = arguments.length;
var sum = 0;
for(;len--;) {
sum += arguments[len];
}
return sum;
}
console.log( add(1, 2, 3) );
console.log( add(1, 3) );
2. 利用callee实现递归
function factorial(num) { if(num <= 1) { return 1; } else { return num + arguments.callee(num-1); } }