狂神JavaScript快速入门学习笔记
狂神视频地址
1什么是JavaScript
JavaScript是一门世界上最流行的脚本语言
2快速入门
2.1 引入JavaScript
1 内部标签
alert('hello world');
2外部标签
2.2 基本语法入门
2.2.1定义变量
一切变量定义都是var,局部变量建议使用let定义
不加var就是全局变量
‘use strict’//放在第一行
严格检查模式预防JavaScript随意性产生问题。
2.2.2 条件控制
跟java一样。
console.log()在浏览器控制台打印变量
2.2.3 数据类型
number
整数 浮点数 科学计数法 负数
字符串
‘abc’ “abc”
这个语法有点像shell
字符串具有不可变性
布尔值
true false
逻辑运算
&& || !
比较运算
=
==
:等于类型不一样但值相同也会true ===
只有类型相同且值相同才会true
坚持不要使用==。
NaN与所有数值都不相等,包括自己。
null和undefined
null 空
undefined 未定义
数组
十分随意 例如:var a=[1,2,3,"learn"]
;
用arr.length 可以改变数组长度
如果数组越界返回undefined
indexof 通过元素获得下标索引
slice 截取数组的一部分,返回一个新的数组
pop push弹出压入元素
unshift 压入头部
shift 弹出头部
sort排序
reverse 元素反转
concat 合并数组,并没有改变原来数组,只是返回一个新的数组
多维数组
对象
对象是大括号,数组是中括号
var person = {name:"qinjiang",age: 3,tags:['js','java','web']}
通过delete删除对象的属性
可以动态添加
person.h=hh
可以添加属性
判断属性值是否在对象中
xxx in xxx
判断一个属性是否是这个对象自身拥有的hasOwnProperty
2.2.4 流程控制
if(){}else if(){}else{}
while for 用法是一样的
for(var num in age)
遍历下标
for(var num of age)
遍历值
2.2.5 map和set //ES6
map 二维数组
map.set()加入一个元素
Set无序不重复集合
遍历set、map也可以用for (x of y)
2.3 函数
方法:对象(属性,方法)
2.3.1定义函数
function abs(x){}
调用函数 abs(x)
arguments 可以拿很多参数,可以有arguments.length
arguments 会有很多参数,有时候我们想使用多余的参数进行附加操作。需要排除已有的参数
rest获取除了已经定义参数的所有参数
function abs(x,y...rest)
必须用…rest进行定义
2.4 变量的作用域 let const 详解
var 定义的变量是有作用域的
假设在函数体中声明,则在函数体外无法访问
如果两个函数使用了相同的变量名,没有关系
内部函数可以访问外部函数的成员,反之不能
把所有变量提到最前面进行定义
默认所有全局变量都会绑定在window对象上
alert本身也是一个window对象下
js实际只有一个全局作用域,任何变量,假设没有在函数范围内找到,就会向外查找,如果在全局作用域中没有找到,报错RefrenceError
规范
由于我们使用的全局变量都会绑定到我们的window上,如果不同的js文件,使用了相同的全局变量?
把自己的代码放在自己定义的为一命名空间中,降低全局冲突问题
let
function aaa(){ for(var i=0;i<100;i++){ console.log(i) } console.log(i+1);//i出了作用域还可以使用}
let关键字,解决局部作用域冲突
建议使用let关键字
const
ES6中引入关键字const
const定义只读变量
2.5 方法
定义方法
方法就是把函数放在对象内部,对象只有两个东西,属性和方法
也可以把函数定义在外面,然后用 用 : 链接类内部的函数名和类外部的函数名
apply
也可以用 apply 类外部调用函数
2.6内部对象
2.6.1 Date
var now = new Date
now.getFullyear
年
now.getMonth
月
now.getDate
日
now.getDay
星期几
now.getHours
时
now.getMinutes
分
now.getSeconds
秒
2.6.2JSON
在js中一切皆为对象,任何js支持的类型都可以用JSON来表示
格式 对象都用{}
数组都用[]
所有的键值对都是用key:value
JSON语法
JSON.stringfy() //对象转化为JSON字符串
JSON.parse() //JSON字符串转化为对象
JSON和js对象的区别
JSON本身就是一个字符串
2.6.3 Ajax
原生的js写法 xhr
jQuery封装好的方法${}
2.7面向对象编程
什么是面向对象?
js有一些区别
类:模板
对象:具体的表现
原型:
x__proto__y
//x的原型是y
class继承
ES6引入
class 定义类
class Student{constructor(name){this.name=name;}hello(){alert('hello')}}
//继承
class XiaoStudent extends Student{ constructor(name,grade) { super(name); this.grade = grade; } mygrade(){ alert('我是一名小学生') } } Xiaohong=new XiaoStudent("小红",7)
本质上还是原型链
2.8操作BOM对象
js和浏览器的关系?
js诞生就是为了能让他在浏览器中运行
BOM
浏览器对象模型
window
window代表浏览器窗口
可以用来调整浏览器窗口
Navigator
Navigator 封装了浏览器窗口
大多数时候不会使用,因为会被人为修改
不建议使用这些属性来判断和编写代码
screen
代表屏幕尺寸
location
代表当前页面的URL
document
代表当前页面,html DOM文档树
获取具体的文档树节点
获取cookiedocument.cookie
劫持cookie原理
将cookie上传到他的服务器
服务器端可以设置cookie: httpOnly
操作DOM对象(重点)
核心:浏览器页面就是一个Dom树形结构!
更新:更新Dom节点
遍历Dom节点:得到Dom节点
删除: 删除一个Dom节点
添加: 添加一个新的节点
增添节点
要操作Dom节点必须先获得Dom节点
定位到某一个节点
document.get...
这是原生代码之后尽量使用jquery
更新节点
创建之后//操作文本id1.innerText='123'id1.innerHTML="
"
删除节点
删除节点的步骤,先获取父节点,在通过父节点删除自己
通过父节点删除子节点
删除是一个动态的过程,删除的过程Child是在不断变化的
father.removeChild()
我们获得了某个Dom节点,假设这个Dom节点是空的,我们通过innerText 就可以增加一个元素了,但如果这个Dom节点已经存在元素了,我们就不能这么干!会产生覆盖
追加 append
创建一个新的节点 createElement
history
history代表浏览器的历史记录
2.9操作表单
- 文本框
- 下拉框
- 单选框
- 多选框
- 隐藏域
- 密码框
表单目的:获得表单信息
用户名:
性别: 男 女
var input_text=document.getElementById('username'); var boy_value=document.getElementById('boy'); var gir_value=document.getElementById('girl'); //得到输入框的值
MD5算法加密
jQuery
js和jQuery关系:
JQuery库
获取JQuery
jQuery官网
CDN 引入:百度:
公式:$(selector).action()
选择器就是CSS选择器
点我 $('#test-jquery').click(function (){ alert('hello,jquery'); });
选择器
- 标签
$('p').click()
- id
$('#p').click()
- 类
$('.class').click()
jQuery事件
- 鼠标事件
- 鼠标事件
#divMouse{ width: 500px; height: 500px; border: 1px solid red; } mouse: 在这里移动鼠标试试 // 当网页元素加载完毕之后才会执行事件 /*$(document).ready(function(){ })*/ //简写 $(function (){ $('#divMouse').mousemove(function (e){ $('#mouseMove').text('x:'+e.pageX+'y'+e.pageY) }) })
- 键盘事件
jQuery操作Dom
能够操作html css
- JavaScript
- Python
$('#test-ul li[name=python]').text('111');
#小技巧
如何巩固JS
看JQuery源码,看js源码
巩固html
CSS
扒网站,全部down下来,然后对应看修改效果
后续:element bootstrap