JavaScript
行为语言
也是严格区分大小写的,可以在控制台console.log打印输出的东西
严格检查模式strict
’use strict’ 放在第一行
es6之后 局部变量 let定义
1.什么是JavaScript?
是一门世界上最流行的脚本语言
2.引用script
里面的注释用//
alert("helloWord");弹窗
内部引用和style一样
<script src=”../js/helloWord.js”></script>外部引用
3.数据类型 :typeof 判断类型
js不区分小数和整数都用number表示 :整数、浮点数、科学计数法、负数、NaN(not a number),Infinnnity(表示无限大)
字符串 ” “”
布尔值 :true false
逻辑运算 && || !
比较运算 =赋值 ==等于(类型不一样 ,值一样,也会判断true) ===绝对等于 (类型一样 ,值一样 ,为 true)
null:空 undefined未定义
数组 var arr = [1,2,3,4,”sada”,true,null ] 超出数组下标 会报undefined
对象用 {} var person {name:”songyue”, age:16} 里面是 键值对的写法 ,每一个属性用 ,隔开
数据类型详解
字符串 :正常字符串用 单双引号 包裹 parseInt转换字符串
trim(去除字符串亲啊后的空白字符)
`注意转义字符 \
多行字符串编写用tab上面esc下面那个按键“
模板字符串 例如 let name =’songyue’ console.log(‘你好呀,&{name}’)
字符串长度 .length 也可以打印下标 []
字符串不可变
大小写转换
根据字符找脚标student.indexOf(”t”)
subString方法[) 左闭右开
数组:1.var arr = newArray(1,2,3) 2.var arr=[1,2,3]
push:添加
可以包含任意的数据类型
字符串长度 .length
可变可以替换 长度可以改变 后面自动补充undefind
根据字符找脚标student.indexOf(”t”)
slice截取数组的 一部分 类似于 subString方法[) 左闭右开
push压入元素到尾部 pop弹出最后一个元素 unshift压入元素到头部 shift弹出头部的一个元素
排序 sort
元素反转 reverse相当于顺序翻转过来
concat添加多个,并没有修改数组会返回一个新的数组
连接符join 打印拼接数组使用特定的字符串拼接
多维数组
对象类型
若干个键值对,所有的键都是字符串,值是 任意对象,例如
vsr person = {
name:”宋岳”,
age:18,
score:0
}
对象赋值 对象 .属性名 =
使用一个不存在的对象属性不会报错
动态的删除属性 delete person.name
动态地添加person.haha=”哈哈 “
判断属性值是否在这个对象中 “age” in person
判断 一个属性是否属于自身拥有的 hasOwnProperty
流程控制:
if判断
while
for
Map和Set:es6的新特性
map:
var map = new Map([[‘songyue’,100],[‘miaojiale’,80],[‘jiamingyu’,60]]);
let songyue = map.get("songyue");set delete
console.log(songyue)
Set:
var set = new Set([1,2,3,4,5,4,4,4];
set.add(6)
set.delete(4)
通过for...of实现:
for (var mapElement of map) {
console.log(mapElement)
}
函数 :
定义方式一 :
function abs(x){
return x;
}
定义方式二:
var abs = function (x){
return x;
}
方法函数可以传任意参数,也可以不传参数
arguments是 一个JS免费赠送的关键字,代表传递进来的所有参数,是一个数组,包含所有的参数 ,想用多余的参数进行操作时,需要排除已经传过来的
所以就有了rest获取 除了 已经定义的参数之外的所有参数,必须写在最后面 前面加上...
function aaa(a,b,...rest){
console.log("a"+a)
console.log("b"+b)
console.log(rest)
}
变量的作用域:
在函数体中声明,在函数外不能用
两个函数用了同样的参数只要在函数内部就不冲突
内不可以访问外部成员,反之不行
假设嵌套方法里面都用了同一个参数 ,他会首先在自己的方法里面找这个参数,如果有就执行
养成规范,所有的变量都定义在函数的头部
全局变量定义在外部
函数也可以视作变量如果在函数中没有找到 就会向外查找,如果在全局作用域都没找到就会报错,引用异常
由于所有的全局变量都会绑定到 windows上如果不同的js文件,使用了相同的 全局变量就会冲突
可以把自己的代码全部放入 自己定义的唯一空间名字中,降低全局命名冲突的问题
var space={};
space.name="狂神";
space.add = function(a,b){return a+b} 方法也一样
let关键字是局部变量只在代码块中有用,不能重复
const常量
方法:设置一个对象,里面有方法,this和java一样如果方法在外面就是默认指向调用这个方法的
var sy = {
name:"宋岳",
birth:2020,
age:function (){
let year = new Date().getFullYear();
return year-this.birth }}
apply可以控制this的指向 方法里面有this 调用 方法名.apply(指定的对像,参数)
内部对象:
Data时间
JSON:
在javaScript中一切皆为对象,任何js支持的类型都可以用JSON来表示
格式
对象都用{}
数组都用[]
多有的键值对都用 key:value
用法:
面向对象编程:
类是对象的模板,对象是类的具体实例
继承的一种方法,proto这样xiaoming就有了user的所有属性
class继承 :继承之后实例化
操作BOM对象:浏览器对象模型
windows代表浏览器窗口
screen代表全屏幕属性
location代表当前页面的URL信息
reload()刷新
.assign(写网址)设置新的定位
document代表当前的页面 html DOM文档树
.getElementById等等
.cookie
history:back()后退 forward()前进
confim()弹窗 定时器setInterval循环执行 setTimeout(方法,时间毫秒)调用一次
操作DOM对象:文档对象模型
核心 :整个浏览器就是一个Dom树形结构
更新:更新DOM节点
innerText: 修改文本的值
innerHTML 会解析HTML文本标签
.style方法
遍历DOM节点:得到DOM节点
删除:删除一个DOM节点
步骤:先获取父节点,通过父节点 删除自己 子节点 . parentElement获取父节点 父节点 . removeChild(子节点 或者father.childern[下标] )
添加 :添加一个DOM节点
append追加,有appendChild追加子元素
创建新的节点document.createElement(标签名字 )
setAttribute(’id’,’name’);直接设置标签里面的属性
想要操作DOM节点,就需要先获取到 方法 document .getElementsByid,class等等
father.children获取父节点下的所有子节点 还有第一、第二、上一个 、下一个 等
操作表单 :目的 提交信息
文本框 text
下拉框 select
单选框 radio
多选框 checkbox
隐藏域 hidden
密码框 password
提交表单:form里面 onsubmit(return 方法)如果方法里面return false就不能提交过去
md5 <scriptsrc=”https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js”></script>
jquery库,里面有大量的javascrpt函数
公式:$(选择器).事件(这里写方法):例如:
鼠标事件:mouseDown按下鼠标 mouseMove移动鼠标
网页准备就绪的jquery简写
例子:
jquery操作DOM元素 :
选中那个标签之后, .text()获得值,()括号里面有值就会替换掉, .html一样的效果
css操作 .css({“color”,”red”})如果再有的话 就在 大括号里面继续写
元素的隐藏和显示 .show() .hide()
正则表达式:test(字符串)方法测试是否符合
var reg = /^\w{6,12}$/
^:表示开始 $表示结束 []代表某个范围内的单个字符比[0,9] .表示任意单个字符除了换行和行结束 \w 代表单词字符 字母数字下划线相当于[A-Za-z0-9_] \d代表数字字符[0,9]
量词 : +至少有一个 *零个或者多个 ?零个或者一个 {x}x个 {m,}至少m个 {m,n}至少m个最多N个