正则表达式
- 备选字符集/^[]$/
- 预定义字符集
一个数字:\d
一个数字、字母、下划线\w
一个空格\s - 有明确数量的话
{n,m} 出现n-m次
{n,}至少出现n次
{n}必须出现n次 - 无明确数量
?可有可无,最多1次
*可有可无,多了不限
+最少一次,多了不限 - 选择和分组(规则|规则)
- 预判
(?![预判规则]+$)
- 验证 var bool=reg.test(输入的内容);
Math对象
- 取整
Math.ceil(num) 上取整
Math.ceil(num) 下取整
Math.round(num) 四舍五入取整 - 乘方
Math.pow(底数,幂); - 开方
Math.sqrt(num); - 最大值Math.max
- 最小值Math.min
- 随机数Math.random()
Date()日期对象
- 获取当前时间:
var now=new Date(); - 复制时间,
var copy=new Date(now);
API
FullYear Month Date Day Hours Minutes Seconds Milliseconds
get获取
set设置
Day不允许设置,取值范围是0-6,0代表星期天
Month取值范围是0-11
错误对象
语法错误:SyntaxError
引用错误:RerferenceError
类型错误:TypeError
范围错误:RangeError
错误处理用if else
try catch性能太差了
function 重载
arguments可以做的事:
1、变相实现重载:通过在函数内部判断arguments,执行不同的操作
2、以后有没有形参已经无所谓了
3、正式开发中,有可能将多个函数整合为一个函数 - 提升代码性能 - 代码优化
匿名函数
匿名自调函数:只会执行一次,节约内存,因为匿名函数,没有变量引用着,用完就会立刻被垃圾回收器回收掉
(function(){ })();
匿名函数回调:将函数作为实参,传递给其他函数调用
1、学习回调的目的:让你们知道哪些东西属于回调,匿名函数只要不是自调,就是回调
arr.sort(function(){})
str.replace(reg,function(){})
btn.onclick=function(){}
闭包
希望保护一个可以【反复使用的局部变量】的一种词法结构,其实函数一个函数,写法和以前有点不同
何时使用:希望保护一个可以【反复使用的局部变量】的时候
如何使用:
1、两个函数进行嵌套
2、外层函数创建受保护的变量
3、外层函数返回return出内层函数
4、内层函数要去操作受保护的变量
防抖节流公式:
function fdjl(){
var timer=null;
return function(){
if(timer!=null){clearTimeout(timer)}
timer=setTimeout(function(){
//操作
},1000);
}
}
var result=fdjl();
对象object
- 创建对象
var obj={
"属性名":"属性值"
"方法名":"function(){},"
} - 访问对象的属性和方法
obj.属性名; === obj["属性名"] obj.方法名(); === obj"方法名"; js中一切都是对象,一切对象的底层都是hash数组 - 访问到不存在的属性,返回undefined
- 可以随时随地添加新属性和新方法
obj.属性名=属性值;
obj.方法名=function(){}; - 如果我们希望遍历出对象所有的东西,应该使用
for(var i in lzh){
console.log(lzh[i]);
} - 如果你希望在对象的方法里使用到对象自己的属性:this.属性名;
this的指向:
1、单个元素绑定事件:this->单个元素
2、多个元素绑定事件:this->当前触发事件的元素
3、函数中使用this->谁在调用此方法,this指的就是谁
4、定时器中的this->window
5、箭头函数this->外部对象
6、构造函数中的this->当前正在创建的对象