window.alert()
window.prompt()
window.confirm()
window.onload
window.onscroll
window.onresize
window.location
浏览器地址栏
window.location.href = url地址
window.navigator
window.history
window.open()
window.close()
标签对象.onclick
标签对象.ondblclick
标签对象.oncontextmenu
标签对象.onmousedown
标签对象.onmouseup
标签对象.onmousemove
标签对象.onmouseover
标签对象.onmouseout
标签对象.onmouseenter
标签对象.onmouseleave
键盘事件只能给可以被选中的标签绑定,例如input,select,textarea,button,a,或者绑定给document或者window
标签对象.onkeydown
标签对象.onkeyup
多个按键事件
e.keyCode
e.ctrlKey
ctrl是否被按下
e.altKey
alt是否被按下
e.shiftKey
shift是否被按下
document.onkeydown = function(e){
e = e || window.event;
if( e.ctrlKey && e.shiftKey && e.keyCode == 86 ){
console.log(‘我按了三个键’);
}
}
onfocus
oninput
onchange
onsubmit
只有移动端支持
标签对象.ontouchstart
标签对象.ontouchend
标签对象.ontouchmove
标签对象.ontransitionend
标签对象.onanimationend
包含滚动条
不包含滚动条
有文档类型声明
实际上是获取HTML属性
document.documentElement.scrollTop
document.documentElement.scrollLeft
没有文档类型声明
实际上是获取body的属性
document.body.scrollTop
document.body.scrollLeft
兼容方式
逻辑或赋值方式
作用
语法
参数
参数1
参数2
作用
语法
参数
作用
语法
参数
父级对象.childNodes
父级对象.children
父级对象.firstChild
父级对象.lastChild
父级对象.firstElementChild
父级对象.lastElementChild
标签对象.previousSibling
标签对象.nextSibling
标签对象.previousElementSibling
标签对象.nextElementSibling
标签对象.parentNode
标签对象.attributes
节点类型
标签对象/节点对象.nodeType
节点名称
标签对象/节点对象.nodeName
节点内容
标签对象/节点对象.nodeValue
创建
创建一个标签节点/元素节点
创建一个文本节点
通过setAttribute()定义标签节点的属性,以及属性值
将节点写入页面中
在父级元素的末位添加节点
在父级中的某个标签之前,添加节点
删除节点
克隆节点
标签节点/对象.cloneNode()
标签节点/对象.cloneNode(true)
事件源
事件类型
事件处理函数
是一个JavaScript自动定义的对象,这个对象中,存储与事件相关的数据信息
获取事件对象
e.type
事件源边框线内,左上角为坐标原点
坐标原点是视窗窗口的左上角
坐标原点是HTML文档的左上角
client和page的区别
鼠标点击对象的信息,存储在target属性中
innerText
tagName
id
className
点击子级标签会触发父级标签上相同类型的事件
获取机制
冒泡机制
捕获机制
执行机制
标签对象.removeEventListener(‘事件类型’ , 事件处理函数)
只能移除绑定的是一个传参的函数名称
// 清除事件 清除的时间处理函数是fun
oDiv.removeEventListener(‘click’ , fun);
- function delFun(ele , type , fun){
if(ele.removeEventListener){
// 普通浏览器
ele.removeEventListener(type , fun);
}else{
// 低版本IE浏览器
ele.detachEvent( ‘on’ + type , fun);
}
}
方法1
方法2
方法3
兼容语法
let
const
var fun = () => {}
只有表达式函数,可以写成箭头函数 function fun(){} 这样正常定义的函数不能写成箭头函数
箭头函数不能被预解释
箭头函数的this指向的是父级程序的this指向
如果父级不是函数,没有this指向,箭头函数的this指向的是window
箭头函数的this指向,不能被改变
箭头函数没有arguments
简写语法
call()方法
apply()方法
bind()方法
立即执行函数,不能被重复调用
立即执行函数的this,指向window
语法
(函数(){})()
!函数(){}()
~函数(){}()
函数的参数,在立即执行()中定义
字符串内容
支持换行
可以解析变量
数组的解构
var [变量1 , 变量2 , …] = [1,2,3…]
var [变量1 , 变量2 , [变量3] …] = [ 1 , 2 , [ 3 , 4 , ] …]
多维数组转化为一维数组
对象的解构
var {变量1 , 变量2 …} = {属性1 , 属性2 }
var {变量1 : 别名 , 变量2 : 别名 …} = {属性1 , 属性2 }
var {变量1 : { 属性2 : 别名 }} = {属性1 : {属性2 } }
…数组
以动画效果形式,实现标签的运动效果
核心思想
参数
执行运动的标签对象
需要执行运动的属性属性值
当所有的运动都结束时,执行的程序
在轮播图中,通过运动函数来实现图片的轮播
步骤过程
1,
定义一个变量,来存储定时器
2,
循环遍历,第二个参数,对象中的每一个单元,生成一个对应的运动定时器
1,获取标签的初始属性值
当前循环的运动属性,对应的属性值
添加一个判断
2,定义定时器
将定时器存储在对象变量中,对象中的单元属性是运动属性,数值是setInterval的执行结果(1,2,3…)
1,定义步长
2,每次运动,改变的数值
3,将新的初始值数据,赋值给标签对象
添加判断
4,判断是否到达最终位置
当前初始值 == 最终位置数值
清除当前定时器
5,判断对象变量,是否是一个空对象
定义html,css
JavaScript部分
1,获取标签对象
2,轮播图步骤
1
根据原始轮播图,定义焦点按钮
循环遍历轮播图li单元
2
复制原始轮播图中,第一个和最后一个li
3
自动轮播
4
定义运动终止函数
判断index的数值
焦点的样式改变
给变量赋值为false
5
移入移出
6
左右切换
给父级div添加点击事件,并且判断
如果点击的是左链接
如果点击的是右链接
7
焦点
给ol添加点击事件,并且判断
如果点击的是li标签
8
解决点击过快问题
定义一个变量,存储数值为false
给左右切换和焦点,添加判断
字面量
构造函数
test()
exec()
元字符
\d
\D
\w
\W
\s
\S
.
边界符
^
$
限定符
?
{n}
{n,}
{n,m}
特殊符号
\
|
()
[ ]
a 至 b
[^]
写在表达式之外的
/表达式/i
/表达式/g
相关函数
search()
match()
replace()
默认只替换一次
参数1,如果是/表达式/g,替换全局
实际操作中,如果有变量参与
面向对象是一种编程思想
constructor(形参){
this.属性1 = 参数;
}
实例化对象方法(){
程序内容
}
}
const 实例化对象 = new 构造函数(实参);
实例化对象.方法();
是一门服务器端的弱类型的脚本语言
作用
原始数据类型
标量类型
布尔类型
字符串类型
整数类型
浮点数类型
复合类型
数组
PHP中数组单元的属性,可以是字符串
$arr = [1,2,3,4,5];
$arr = [
‘name’=>‘张三’,
‘age’ =>18,
‘sex’ =>‘男’,
];
对象
函数
特殊类型
伪类型
字符串拼接运算符
if…else if…else
switch
没有for in 循环语句
foreache语句语法区别较大
针对数组的循环遍历
foreach( 数组变量 as 自定义变量1 => 自定义变量2 ){
循环体内容;
}
foreach( 数组变量 as 自定义变量1 ){
循环体内容;
}
PHP7.0版本以后提供的最新的操作数据库的API方法
操作步骤
1,定义配置参数,链接MySQL服务器
参数
p d o = n e w P D O ( pdo = new PDO( pdo=newPDO(dsn, u s e r , user, user,pwd);
2,定义并且执行SQL语句
执行SQL语句
查询语句
非查询语句
(增,删,改语句)
使用exec()来执行,参数是定义的SQL语句
执行成功是影响的数据数量
执行失败是false
3,获取执行结果,显示在页面中
fetchAll()
fetch()
rowCount()
注意
存储数据的仓库
分类
网状型数据库
层次型数据库
关系型数据库
非关系型数据库
基本语法
整数类型
M
设定存储数值的位数
实际项目时,没有任何作用,即时超出设定位数,没有超出数值范围,都可以存储
TINYINT(M)
大小
范围
SMALLINT(M)
大小
范围
MEDIUMINT(M)
大小
范围
INT(M)
大小
范围
BIGINT(M)
大小
范围
浮点数类型
M,D
M
D
整数部分的位数
FLOAT(M,D)
单精度小数
范围
DOUBLE(M,D)
双精度小数
范围
DECIMAL(M,D)
定长浮点数
范围
字符串类型
M
CHAR(M)
定长字符
范围
VARCHAR(M)
变长字符
范围
TINYTEXT(M)
范围
TEXT(M)
范围
MEDIUMTEXT(M)
范围
LONGTEXT(M)
时间类型
YEAR()
存储年份
2
4
TIME()
DATE()
DATETIME()
TIMESTAMP()
属性
UNSIGNED
ZEROFILL
约束
NOT NULL
DEFAULT
UNIQUE KEY
PRMARY KEY
FOREIGN KEY
SELECT 字段
,字段
… FROM 表名
SELECT 字段
,字段
… FROM 表名
WHERE 字段
约束条件
< >= <= <>不等于 AND 逻辑与 OR 逻辑或
SELECT 字段
,字段
… FROM 表名
WHERE 字段
约束条件 ORDER BY 字段1 排序方式 , 字段2 排序方式
按照指定字段的排序方式显示查询结果
ASC
DESC
SELECT 字段
,字段
… FROM 表名
WHERE 字段
约束条件 ORDER BY 字段1 排序方式 , 字段2 排序方式 LIMIT 起始数据索引 , 显示数据数量
UPDATE 表名
SET 字段
= 数据 , 字段
= 数据…;
UPDATE 表名
SET 字段
= 数据 , 字段
= 数据… WHERE 字段
约束条件;
注意:SQL语句中没有 += 等赋值运算符, 只能使用 age
= age
+1
DELETE
DELETE FROM 表名
;
DELETE FROM 表名
WHERE 字段
约束条件;
TRUNCATE
TRUNCATE TABLE 表名
区别
三次握手
为了确认客户端和服务器都能正常的接收和发送信息
第一次
客户端发送给服务器
客户端
服务器
第二次
服务器发送给客户端
客户端
服务器
第三次
客户端发送给服务器
服务器
四次挥手
第一次
客户端发送给服务器
第二次
服务器发送给客户端
第三次
服务器发送给客户端
第四次
客户端发送给服务器
请求报文
响应报文
get请求的特点
post请求的特点
概念
作用
设定
php
设定
setcookie()
参数1
参数2
参数3
cookie的时效
说明
读取
$COOKIE
JavaScript
document.cookie
设定
document.cookie = ${key}=${value};expires=${time ? t : ''}
;
}
- 三个参数,是cookie的名称,数据,和时效
- 读取
- 将cookie字符串,转化为cookie对象
- function getCookie(cookieStr){
const obj = {};
let arr = cookieStr.split(’; ‘);
arr.forEach(function(item){
let newArr = item.split(’=’);
obj[newArr[0]] = newArr[1];
})
return obj;
}
删除
概念
作用
相关操作
设定
获取
删除
清除
1
2
3
4
5
1,创建ajax对象
2,定义open()
xhr.open(参数1,参数2,参数3);
参数1
参数2
参数3
是否异步
默认值
设定值
ajax请求一般都是异步执行
3,设定send()
4,获取响应体
标准浏览器
兼容低版本IE浏览器
当ajax状态码为4,并且请求状态码为2XX时,请求成功,可以获取响应体
1,创建ajax对象
2,定义open()
xhr.open(参数1,参数2,参数3);
参数1
参数2
参数3
是否异步
默认值
设定值
ajax请求一般都是异步执行
3,定义响应头
4,设定send()
5,获取响应体
标准浏览器
兼容低版本IE浏览器
当ajax状态码为4,并且请求状态码为2XX时,请求成功,可以获取响应体
同源
跨域
jsonp
原理
传参
后台程序
代理服务器
代理服务器特点
正向代理
反向代理
基本步骤
1,设定服务器配置文件
2,定义ajax请求
async function fun(){
let a = await new Promise();
let b = await new Promise();
let c = await new Promise();
}
1,不销毁执行空间
2,变量私有化
在函数外部可以访问函数内部的数据
${this.name}今年${this.age}岁了
);// 通过父类,生成实例化对象
const p = new Father(‘李四’ , 20);
// 定义子类
function Son(){}
// 在子类的prototype中,添加父类的实例化对象
Son.prototype = p;
// 通过子类,生成实例化对象
// 子类实例化对象,就具有父类的所有属性和方法
const s = new Son();
function Son(sex){
// 在子类中,调用父类
// 通过call方法来改变父类构造函数的this指向
// 相当于在当前位置生成父类的属性
// 并且this指向子类构造函数的this
Father.call(this , '张三',18)
// 我们自己定义的子类的属性
this.sex = sex;
}
// 子类执行时需要的参数
const s = new Son(‘女’);
组合继承
// 准备一个父类
function Father(name,age){
this.name = name;
this.age = age;
}
Father.prototype.fun = function(){
console.log(${this.name}今年${this.age}岁了
);
}
// 定义子类
function Son(sex){
Father.call(this,‘张三’,18);
this.sex = sex;
}
// 继承方法,也会继承属性,但是这个属性的存储位置不同
Son.prototype = new Father(‘李四’,20 );
// 给子类自定义方法,要写在Son.prototype赋值之后
Son.prototype.f =function(){
console.log(this.name,this.sex);
}
const s = new Son(‘男’);
- 在实例化对象中,直接存储的是通过call方法,继承的父类的属性和属性值
- 在实例化对象的__proto__中,存储的是通过添加父类实例化对象,继承的属性和属性值
关键词
extends
super
class Son2 extends Father2{
constructor(name,age,sex){
super(name,age);
this.sex = sex;
}
f(){
console.log(this.name,this.age,this.sex);
}
}
作用
基本原理
1,为了不造成全局变量污染,使用函数封装程序,使用闭包来调用程序
2,使用闭包,函数的返回值,必须是也是函数
3,通过判断生成实例化对象.
代码规范
基本代码
const Utils = (function () {
// 先定义一个构造函数
class setElement {
constructor() {
}
setCss(ele,styleObj) {
for (let key in styleObj) {
ele.style[key] = styleObj[key];
}
}
setEvent(ele,event,fun){
ele.addEventListener(event,fun)
}
}
// 定义一个空对象
let obj = undefined;
return function(){
if(!obj){
// 调用执行构造函数,不需要参数
obj = new setElement();
}
return obj;
}
})();
作用
作用
核心内容
1,消息盒子
2,on方法
3,emit方法
4,off方法
5,delete方法
代码
// 绑定事件类型和事件处理函数到消息盒子中
on(type,fun){
if(!this.message[type]){
this.message[type] = [fun];
}else{
this.message[type].push(fun);
}
}
// 执行事件,发布消息
emit(type,…agr){
if(!this.message[type]){
return;
}
let event = {type:type,agr:agr};
for(var i = 0 ; i <= agr.length-1 ; i++){
let tmp = agr[i];
tmp(event);
}
}
// 删除事件处理函数
off(type,fun){
if(!this.message[type]){
return;
}
for(var i = 0 ; i <= this.message[type].length-1 ; i++){
var f = this.message[type][i];
if(f === fun){
this.message[type].splice(i,1);
i–;
}
}
}
// 删除整个事件类型
delete(type){
if(!this.message[type]){
return;
}
delete(this.message[type]);
}
}
obj.emit(‘byCar’ , fun1,fun3);
obj.off(‘byCar’ , fun3);
obj.off(‘byCar’ , fun1);
obj.delete(‘byCar’);
function fun1(){
console.log(‘买法拉利’)
}
function fun2(){
console.log(‘买兰博基尼’)
}
function fun3(){
console.log(‘买科尼塞克’)
}
function fun4(){
console.log(‘买三居室’)
}
function fun5(){
console.log(‘买别墅’)
}
function fun6(){
console.log(‘买城堡’)
}
Object.defineProperty()
参数1
参数2
参数3
劫持键名的相关设定
必须是对象类型
设定方法
value:数据
get(){}方法
set(){}方法
问题1
问题2
问题3
1,定义
2,使用
方法1
方法2
3,新增
4,删除
5,清除
6,长度
7.遍历
set对象.forEach()
注意:
1,定义
2,新增
map对象.set(参数1,参数2)
参数1
参数2
注意
3,使用
4,删除
5,清除
6,遍历
7,判断是否是map中的成员
网站
中文
官网
核心
优点
两个全局外部接口
jQuery通过选择器获取的标签对象,都是伪数组的形式
转化
JavaScript语法获取的标签对象,不能使用jQuery语法操作,jQuery语法获取的标签对象,也不能使用JavaScript语法操作,必须要相互转化
JavaScrip标签对象转化为jQuery标签对象
jQuery标签对象转化为JavaScript标签对象
方法
1,通过id选择器
2,通过calss选择器
3,通过标签名称
4,通过css选择器
5,通过结构伪类选择器
$(‘ul>li:first’)
$(‘ul>li:last’)
$(‘ul>li:eq(索引)’)
$(‘ul>li:odd()’)
$(‘ul>li:even()’)
在通过jQuery选择器获取到的标签对象的基础上,再使用筛选器,获取符合条件的标签
1
$( ).first()
2
$( ).last()
3
$( )…eq()
4
$( ).prev()
5
$( ).next()
6
$( ).prevAll()
7
$( ).nextAll()
8
$( ).siblings()
9
$( ).parent()
10
$( ).parents()
11
$( ).find(条件)
12
$( ).end( )
返回链式编程的上一个操作对象
与parent()的区别
parent()
end()
注意,属性操作不是样式操作
关键词
prop
attr
获取指定属性的属性值
设定指定属性的属性值
删除指定属性
注意,这里是进行的class的类名操作,不是进行样式操作
1
新增class类名属性值
2
删除class类名属性值
3
判断是否有这个类名
4
切换类名
特别注意
$( ).html()
全覆盖操作
可以解析标签
没有参数
设定参数
$( ).text()
全覆盖操作
不能解析标签
没有参数
设定参数
$( ).val()
全覆盖操作
没有参数
设定参数
注意
select>option
input>file
1
$( ).css(属性)
2
$( ).css(属性 , 属性值)
3
$( ).css({ 属性:属性值 , 属性:属性值 })
on()语法绑定
语法1
语法2
语法3
语法4
简写语法绑定
特殊事件绑定
$( ).hover(参数1,参数2)
参数1
参数2
鼠标只有经过当前绑定事件的标签对象的编辑线时,才会触发事件,经过子级标签时,不会触发函数
事件的删除
事件的发布
$(‘div’).trigger(‘click’);
one()方法绑定事件
阻止事件传播,阻止冒泡
阻止默认事件执行
return false
新增元素
写入元素
父级元素结束位置,新增标签
父级元素起始位置,新增标签
已有元素之后,新增标签
已有元素之前,新增标签
修改元素
删除元素
删除标签对象的内容
删除标签对象自己本身
克隆元素
语法1
语法2
$( ).clone(参数1)
是否克隆元素身上的事件
默认会也克隆子级元素身上的事件
语法3
1, $( ).height() $( ).width()
2, $( ).innerHeight() $( ).innerWidth()
3, $( ).outerHeight() $( ).outerWidth()
4, $( ).outerHeight(true) $( ).outerWidth(true)
总结
如果设定好了 属性 ,获取到的属性值会保持不变,有没有box-sizing: border-box;不影响结果
普通盒模型
怪异盒模型
不同盒模型属性,如果只定定义了width和height,获取数据结果是不同的
1,获取css属性值
2, $( ).offset()
标签和文档的距离
获取结果是一个对象,有两个单元 left 和 top
可以设定数据,也是定义为对象的形式
如果css定义的样式,和设定的样式,数据有差距,通过定位来调整,margin值不变
3, $( ).position()
1
$( ).show()
让元素动画显示
参数1
参数2
参数3
2
$( ).hide()
让元素动画隐藏
参数1
参数2
参数3
3
$( ).toggle()
切换元素隐藏显示
参数1
参数2
参数3
4
$( ).slideDown()
让元素下拉显示
参数1
参数2
参数3
5
$( ).slideUp()
让元素上卷隐藏
参数1
参数2
参数3
6
$( ).slideToggle()
让元素上下切换
参数1
参数2
参数3
7
$( ).fadeIn()
让元素逐渐显示
参数1
参数2
参数3
8
$( ).fadeOut()
让元素逐渐消失
参数1
参数2
参数3
9
$( ).fadeToggle()
让元素渐隐渐现
参数1
参数2
参数3
10
$( ).fadeTo()
渐渐变化到指定的透明度
参数1
参数2
参数3
参数4
点击过快
当前动画没有结束,又触发了下一次动画
默认
$( ).stop().动画
$( ).finish().动画
$( ).animate()
参数1
参数2
参数3
参数4
注意
jQuery中默认对获取的标签对象数组中的所有内容都执行操作
$(‘ul>li’).addClass(‘active’);
jQuery的tab切换/选项卡
get方式
post方式
ajax方式
$.(window).ajaxStart(function(){})
$(window).ajaxSend(function(){})
$(window).ajaxSuccess(function(){})
$(window).ajaxError(function(){})
$(window).ajaxComplete(function(){})
$(window).ajaxStop(function(){})
可以向jQuery中,添加自定义方法
语法1
语法2
自定义函数名2:function(){
return 相关操作
},
}
$( ).index()
$( ).each(function(参数1,参数2){})
循环遍历
参数1
参数2
标准浏览器
兼容浏览器