JavaScript高级4

浅拷贝和深拷贝(递归)

浅拷贝

适用场景:只能复制一维的数据形式

一维数据:例如数组的元素都是简单类型,例如对象的属性值都是简单类型

实现方式:

数组方法:slice()

数组和对象进行遍历拷贝操作

varobj={

name:'jack',

age:18

};

varobj2={};

// 封装一个用来进行对象浅拷贝的函数

// - current参数 表示被复制的对象

// - target参数 表示拷贝给那个对象

// - 使用要求:current和target必须都是对象才可以使用

functioncopy(current,target){

for(varkincurrent){

target[k]=current[k];

}

}

copy(obj,obj2);

深拷贝

适用场景:可以对复杂类型进行完全拷贝

设置时与浅拷贝的区别

需要先检测属性时是简单类型或复杂类型

对复杂类型进行具体检测:检测时数组或对象

通过递归调用,拷贝复杂类型数据

// - current参数 表示被复制的对象// - target参数 表示拷贝给那个对象// - 使用要求:current和target必须都是对象才可以使用

functioncopy(current,target){

for(varkincurrent){

// 深拷贝时,需要判断当前属性时是简单类型或复杂类型,再进行分别处理即可

// - typeof可以检测简单类型,复杂类型的结果为'object',null也为'object'

if(typeofcurrent[k]==='object'&¤t[k]!==null){

// 对复杂类型属性值的处理

// console.log(current[k], '复杂类型值');

// 调用copy函数,将current[k]拷贝给target[k]

// - 对复杂类型值进行具体的数组和对象检测操作

target[k]=current[k].constructor===Array?[]:{};

copy(current[k],target[k]);

}else{

// 对简单类型属性值的处理

target[k]=current[k];

// console.log(current[k], '简单类型值');

}

}

}

jQuery插件的设置方式

学习jQuery插件的设置方式,实际上就是学习如何给jQuery对象设置方法

设置方式:

单个设置: $.fn.方法名 = function () { 实现功能的具体代码; };

多个设置:

$.fn.extend({ 设置多个方法,用来实现插件功能 })

$.fn.extend({

sayHi:function(){

console.log('sayHi');

},

sayHehe:function(){

console.log('sayHehe');

}

});

正则表达式

简介

正则表达式是一组用来进行字符串处理的工具。

创建方式:

构造函数创建方式: new RegExp('正则代码');

正则字面量形式: /正则代码/

你可能感兴趣的:(JavaScript高级4)