1、浅拷贝
var obj1={age:10};
var obj2={};
function extend(a,b){
for(var key in a){
b[key]=a[key];
}
}
extend(obj1,obj2);
2、深拷贝
var obj1={age:10};
var obj2={};
function extend(a,b){
for(var key in a){
var item=a[key];
if(item instanceof Array){ //数组
b[key]=[];
extend(item,b[key]);
}else if(item instanceof Object){ //对象
b[key]={};
extend(item,b[key]);
}else{
b[key]=item;
}
}
}
extend(obj1,obj2);
3、遍历DOM树
//根据根节点,调用fn函数,显示根结点名字
function foeDOM(root1){
f1(root1); //调用f1,显示节点名字
var children=root1.children; //获取所有子节点
forChildren(children); //遍历所有子节点函数
}
//给一个子节点,把子节点中所有子节点显示出来
function forChildren(children){
for(var i=0,i<children.length;i++){
var children=children[i];
f1(children);
child.children&&forDOM(child); //判断child下还有没有子节点,有继续遍历
}
}
//函数调用,传入根节点
forDOM(root);
function f1(node){
console.log(node.nodeName);
}
4、正则表达式:匹配字符串
. 除了\n以外任意一个字符
[] 范围 ([a-z]所有小写字母任意一个 [A-Z]所有大写字母任意一个 [a-zA-Z]所有字母任意一个 [0-9a-zA-Z]所有字母或数字中一个)
| 或者
() 分组 提升优先级
* 前面表达式出现0次到多次 {0,}
+ 前面表达式出现1次到多次 {1,}
?前面表达式出现0次到1次 {0,1}
{} 明确表达表达时出现次数
^ 以什么开始(放外面前面)或者取非(取反放里面)
$ 以什么结束放后面
\d 数字中任意一个 \D 非数字中一个
\s 空白符 \S 非空白符
\w 非特殊符号 \W 特殊符号
5、练习
身份证:15位或者18位
([1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX]) ([1-9][0-9]{14})([0-9]{2}[0-9xX])?
座机号:010-13876754 0431-87123490
[0-9]{3,4}[-][0-9]{8} \d{3,4}[-]\d{8}
qq号:5到11位
[1-9][0-9]{4,10} \d{5,11}
手机号:([1][358][0-9][0-9]{8})|([1][4][37][0-9]{8})|([1][7][01367][0-9]{8}) \d{11}
邮箱:[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}
6、创建正则表达式对象:在注释符中间写正则表达式
//通过构造函数
var reg=new RegExp(/\d{5}/);
var flag=reg.test("我的电话是10086");
console.log(flag);
//字面量方式创建
var reg=/\d{1,5}/;
var flag=reg.test("幸运数字:888");
console.log(flag);
合并console.log(/\d{1,5}/.test("幸运数字:888"));
7、密码强度
//获取文本框注册键盘抬起事件
my$("pwd").οnkeyup=function(){
my$("strengthLevel1"),className="strengthLv"+(this.value.length>=6?getLvl(this.value):0);
};
//给密码,返回相应级别
function getLvl(pwd){
var lvl=0;
if(/[0-9]/.test(pwd)){
lvl++;
}
if(/[a-zA-Z]/.test(pwd)){
lvl++;
}
if(/[^0-9a-zA-Z_]/.test(pwd)){
lvl++;
}
return lvl;
}
8、验证邮箱
<input type="text" value="" id="email" />
//获取文本框,注册失去焦点事件
document.getElementById("email").οnblur=function(){
//判断这个文本框是不是邮箱
var reg=/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/;
if(reg.test(this.value)){
this.style.backgroundColor="green";
}else{
this.style.backgroundColor="red";
}
};
9、验证用户输入是不是中文
<input type="text" value="" id="userName" />
document.getElementById("userName").οnblur=function(){
var reg=/^[\u4e00-\u9fa5]{2,6}$/
if(reg.test(this.value)){
this.style.backgroundColor="green";
}else{
this.style.backgroundColor="red";
}
};
escape("")中文变成编码 unescape("")编码变成中文
10、验证表单
checkInput(my$("qq"),/^\d{5,11}$/);
checkInput(my$("phone"),/^\d{11}$/);
checkInput(my$("e-mail"),/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/);
checkInput(my$("telephone"),/^\d{3,4[-]\d{7,8}}$/);
checkInput(my$("fullname"),/^[\u4e00-\u9fa5]{2,6}$/);
function checkInput(input,reg){
input.οnblur=function(){
if(reg.test(this.value)){
this.nextElementSibling.innerText="正确";
this.nextElementSibling.style.color="green";
}else{
this.nextElementSibling.innerText="错误";
this.nextElementSibling.style.color="red";
}
}
}
11、正则表达式方法
g:表示全局加在正则表达式后面
i:忽略大小写
正则表达式对象.$3:提取组
12、数组和伪数组
看能否调用array里的方法