js的回顾

js第一节


document.write("<h1>12</<h1>")
type=“text/script”defer属性
async异步加载
声明变量var const let
变量作用域  全局变量
数据类型 6种 string number typeof 测
使用constructor var o={]
var p=[]
if(o.constructor===Array) documnet.write("")
转换字符串
string +
转换数字模式字符 0101 055 0X54
转换小数格式字符串 tofixed() 
 转换数字 parseint parsefloat *
转换Boolean!! boolean()
使用new可以把string number包装成字符串


js第二节基本运算



+-*/ 取模快算  制表
递增 自增运算
与或非 && !! !
关系运算
全等
赋值 a+=b a=a+b
delete a[1]
三元运算 逗号运算
void运算
连续运算 var a=b=1
三元转成ifelse
var a={(a==1)?console.log(1)
switch default配合使用
匿名函数立即执行(function(){})()
(function(){
return function() {
rturn function(){
return (x+y)/2
}
})()()()执行孙函数
var i=1
(function (){
cosole.log(){
(i++<100)&&argumnets.callee();
}
})()()调用回调函数,记得设置退出条件


js第三节程序结构


if 语句
else
switch语句 default while
for(var i=0;a.length;i++)
for in语句
in 判断是否存在属性
is 判断节点什么
抛出异常


第四节字符串处理


定义字符串 “” (e6)``  构造函数接受一个值来初始化参数
splice改变原来数组返回一个新生成数组
join反 split
concat(1,2,3)不是数组
一定使用concat.apply(this,[1,2]
seach() match() replace() substr()
split<==>jion 数组字符串转换
strim()
字符串加密,解密


第五节使用正则


regexp i大小写 g(gloal)全局 m多行匹配
^ $ 【】只取1 {}取模字符循环的出现的次数
()组匹配 #[0-9a-fA-F]6 ||#[0-9a-fA-F]
现在时间
^([0-2][0-9]):[0-5][0-9]$
 现在日期
[12][/d]{3}-[01][0-9]-[0123][0-9]
 匹配标签
^<[^>]{1, }>[.]<\/\1>
匹配密码
^【\w】{6,12}H5表单验证


第六节使用数组


for foreach 
keys()静态函数使用 unshift
splice
sort
reverse
元素定位indexof lastindexof


第七节使用函数


call apple callee
apply(thisobj,arg)
arguments
arguments.callee指向当前arguments指向的函数。

在特定情况下,我们在使用这个属性的时候,在函数递归或者其他地方使用的时候,可以不使用函数名变量来进行调用arguments.callee=f
使用this 闭包 嵌套函数 递归返回函数
包菜式f(b())
组合函数 是把多个单一函数合成一个多参数函数的运算
var compose=function(f,g){
return function (x){
return f(g());
};
var add=functiom(x)(return x+1)
var mio=function(x){reurn x*5}
compose(add,mio)(2} (2+1)(3*5)=15
函数柯里化
var  add=function(x,y){
return x+y}

高阶函数
回调函数:把函数作为值传入另一个函数,当传入函数被调用时,就称为回调函数
map([123],func)
debounce throttle
第一版防抖 技能冷却才可以使用
function debounce(func,wait){
var timeout
return function(){
clearout(timeout)
timeout=setTimeout(func,wait);
}
}
this为window
第二代
function debounce(func,wait){
var timeout;
return function(){
var contxet=this;
clearTimeout(timeout)
timeout=settimeout(function(){
func.apply(context)
},200);context这个对象将代替func类里this对象
      // 这样做就能让debounce里面的this指向getUserAction里的this,也就是将func中的属性传了进来
}
}
function getUserAction() {
  container.innerHTML = count++;        // 页面上显示累加计数的数字
};

container.onmousemove = getUserAction; 
第三版本
avaScript 在事件处理函数中会提供事件对象 event,我们修改下 getUserAction 函数:
function getUserAvtion(e) {
  console.log(e);
  container.innerHTML = count++;
};
 行内直接加的事件

function debounce(func,wait) {
  var timeout;

  return function() {
    var context = this;
    var args = arguments;

    clearTimeout(timeout)
    timeout = setTimeout(function() {
      func.apply(context,args)    
    },wait);
  }
}
throttle leading首次执行一次 ending结束是否再执行
第一版本使用时间戳
当触发事件的时候,我们取出当前的时间戳,然后减去之前的时间戳(最一开始值设为 0 ),如果大于设置的时间周期,就执行函数,然后更新时间戳为当前的时间戳,如果小于,就不执行。
function throttle(func,wait){
var contxet,args;
var previous
return function(){
var now=+new Date()
contxet=this
args=argments
if(now-previous>wait){
func.apple(context,args)
previous=now;
}
}

使用它box.οnmοusemοve=throttle(getuseraction,1000)
第二版本使用定时器
当触发事件的时候,我们设置一个定时器,再触发事件的时候,如果定时器存在,就不执行,直到定时器执行,然后执行函数,清空定时器,这样就可以设置下个定时器。
function throttle(func,wait) {
  var timeout;
  var previous = 0;
  
  return function() {
    context = this;
    args = arguments;
    if(!timeout) {
      timeout = setTimeout(function() {
        timeout = null;
        func.apply(context,args)
      },wait)
    }
  }
}
第一种事件会立刻执行,第二种事件会在 n 秒后第一次执行;
第一种事件停止触发后没有办法再执行事件,第二种事件停止触发后依然会再执行一次事件

分时函数
往页面加10000个span
 var =[]
for(var i=1;i<=10000i++){
var span=documents.createlemnet("span")
span.style.padding=“6px”
span.innerHTMl=i
arr.push(span)
}
var  fun=function(obj){
}
tminechounk(arr,fun,100)();

偏函数
泛型函数
如果用户不关心一个对象是否拥有某个方法,一个对象也不必只能使用自己的方法,使用call。apply动态调用,可以使用别的对象方法,这样this局限于原对象,而是被泛化了。
递归就是函数对自身的调用

列子1
雯波那契数列
5的阶层
var a=function(x){
if(x<2) return 1
else return x*f(x-1)}
f5=120

列子2
优化递归
function f(n){
return (n==1) ?1:n*(f(n-1)}

function f(n,a){
return (n==1) ?1 :a:n*(f(n-1)}

第八节使用对象
new
a={k:10}
dellete a.k可以完成 k为undefined

object.create(prototype,d)
object.create(null,d)
d 描述属性value writble enumerabl configurable
var s=object.create(null,{siae:{})

key in
for(var i in obj1){
obj2[i]=onj1[i]
}
销毁对象a=null

设计倒计时 数字取整函数 生成随机数和字符串


第八节使用构造函数和原型、


定义构造函数
function(){
this.a=a}
new命令调用构造函数,然后实例化


第九节 bom操作


window prompt alert
window(open,name,feattures,replace)
frame
控制窗口大小和位置
moveby resizeto resizeby scrollto scrollby
navigator.userAgent 用户的是window 还是Unix 还是Macintosh

loction
hash
search
port
pathname
post 
protocol

还有一个view-source


第十节DOM操作


通过标准方式访问文档。操作网页结构,控制样式,和行为。nodetype 1(元素)2(attr)3(text) 8(注释)9(docelement) 12(dtd)
访问元素
queryselsecot getelemntbyid
getelementbytagname 特殊数组collection
getelemntbyclassname noodlist

创建元素
cratelemnt()

插入
appendchild()《==》append()
insertchild 
replacechild
 
删除
removechild

替换
replacechild

关于属性
设置
createattribute()<==>attr

获取
getattribute

读写属性
classname()

设置
setAttribute


removeattribute()

h5 特性
data-id

第十一节事件处理


event
事件源 事件类型 事件处理程序
1,谁被触发
2,如何触发,什么事件,如onlcik
3,事件 通过一个函数赋值方式完成


事件注册
element,addeventlistener("click",listener,usecaptrue)

timeStamp事件方生的时间 target cancelable
取消默认动作

禁止跳转
ao.οnclick=function(){
resturn false} <==>$("bxo").off() $("box").click(click:"")

遮罩层
关闭打开文件
可移动文档

ajax,鼠标坐标,浏览器三大家族


第十二节脚本化CSS


offsetwidth <==>width

scrolltop<==>id #href

文档到底了 scrrollhight

offsetLeft <==> position absolation left

算出页面上(x,y)滚去高度计算
指针页面位置
function get(e){
return {
x:e.pagX||e.clientx+(document.documnetelemnet.scrollLeft||
document.body.scrollLeft),
y:e.pagy||e.clienty+(documentelemnet.scrollTop
|| documeny.body.scrollTop)
}

指针相对位置(a,b)
function(e){
return{
x:e.offsetx|| e.pagex-e.offsetx
y:e.offset|| e.pagey-e.offsety
}
大多数浏览器以内壁外参考点
除mozilla外margin border padding content

b站 scrolltop

显示隐藏display=“”<==>show hide
扩展函数 P(display,true)

半透明显示
IE filters(0,100) 《==》fadein fadeout
opactity(0,1)
渐隐渐显

function fade(e,t,io){
var t=t ||10
if(io){var i=0}
esle{var i=100;}
var out=setinteval(function)(out){
setopacity(e,i)
if(io){
i++;
if(i>=100) cleartimeout(out)
}else{
i--;
if(i<=0){cleartimeout(out)
}},t}
}
e=document.queryselector(‘box’)
调用fade(e,50,ture)

动画

事件处理
静态绑定,动态绑定
bind什么?
1,创建绑定方法
a={a1:function(){alert"zhu"}}
b.bind(a1) 当绑定函数被调用时,该参数会作为原函数运行时的this指向。当使用new操作符调用绑定函数时,该参数无效。
2.偏函数
3.settimeout
在默认情况下,使用window.setTimeout()时,this关键字会指向window(或全局)对象。当使用类的方法时,需要this引用类的实例,需要显式地把this绑定到回调函数以便继续使用实例。
4.作为构造函数使用的绑定函数
绑定函数适用于用new操作符去构造一个由目标函数创建的新的实例。当一个绑定函数是用来构建一个值的,原来提供的 this 就会被忽略。然而, 原先提供的那些参数仍然会被前置到构造函数调用的前面。

trigger<==>jQuery

ajax


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值