let func_1 = function (param1, param2) {
console.log("func_1");
console.log(this);
console.log(param1, param2);
};
let func_2 = function (func, funcTarget = {}, paramArray = []) {
func.target = funcTarget;
func.paramArray = paramArray;
func.apply(func.target, func.paramArray);
}
func_2(func_1, {type:1234}, [111, 555]);
-----------------------------------------------------------------------------------
js数组和对象的区别:
有序、无序。 对象是关联数组,就是将值与特定的对象关联在一起。
当用点号运算符来存取对象属性时,属性名是用标识符表示的;当用中括号来存取对象属性时,属性名是用字符串表
示的,因此可以在运行过程中动态生成字符串。
-----------------------------------------------------------------------------------
基本类型数据:6
引用类型数据:3等 obj arr 函数
浅拷贝与深度拷贝:深拷贝,是拷贝对象各个层级的属性(concat方法与slice也存在这样的情况,他们都不是真正的深
拷贝)
function deepClone(obj){
let objClone = Array.isArray(obj)?[]:{};
if(obj && typeof obj==="object"){
for(key in obj){
if(obj.hasOwnProperty(key)){
if(obj[key]&&typeof obj[key] ==="object"){
objClone[key] = deepClone(obj[key]);
}else{
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
let a=[1,2,3,4],
b=deepClone(a);
a[0]=2;
console.log(a,b);
除了递归,我们还可以借用JSON对象的parse和stringify
function deepClone(obj){
let _obj = JSON.stringify(obj),
objClone = JSON.parse(_obj);
return objClone
}
let a=[0,1,[2,3],4],
b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
如何序列化,输出结果是怎样的格式.(这个函数可以配置不同的参数:一个参数 object{}/ array []; 二个参数
第二个参数为函数/数组;三个参数 )
bool number string 序列化过程中会转为原始值/ undefine null symbol 在序列化过程中会被忽略(在非数组对象
的属性值中时)或者被转换成null(出现在数组中时) 不可枚举的属性会被忽略。
JSON.parse()从一个字符串中解析出JSON对象
-----------------------------------------------------------------------------------
利用JSON转换值达到存储的的方式非常好用
利用json.stringify将存储对象转换成字符串,使用localStorage进行存储,.
当使用localStorge将存储的东西拿出来的后,也是个字符串。 将字符串在使用JSON.parse()从一个字符串中解析出
JSON对象 就可以进行使用了