第二周复习笔记

我是研究僧i 提交于 2020-01-21 23:57:32

前两周学习路线:
围绕JS组成部分:ES、BOM、DOM
ES:声明JS基本语法(变量、判断、循环、函数、数组、对象、内置对象方法)
BOM:使js有能力操作浏览器
DOM:使js有能力操作网页
名词复习:
什么是变量:用来临时网页数据
判断学了哪些:if、switch、?:
什么是循环:重复指定一段代码的表现
什么是函数:将一段公共的代码进行封装,一次定义 多次调用
什么是数组:一堆有序数据的集合
数据类型分类:
基本类型:数值型number、字符串型string、布尔型boolean、null、undefined
数值型(整数和小数)
后端:没有数值型 整型和浮点型
复杂类型:function、array、object
Day01
1.对象:对象一堆无序数据的集合
① 创建对象
语法:// 字面量创建(简单语法 推荐)
var 变量名obj = { 值1 , …, 值n} // 值势必按照下述格式
键:值, …, 键n:值n //注:键引号可加可不加,推荐统一不加
// 内置构造函数语法
var 变量名obj = new Object() // 空对象
var 变量名obj = new Object({ 值1 , …, 值n})
② 操作对象
获取:对象.键
增加:对象.键 = 值 (键不存在就是新增)
修改:对象.键 = 值 (键存在就是修改)
删除:delete 对象.键
注意:当键是变量名时就不能用点了. 而是 对象[变量名]
2.数组: 数组一堆有序数据的集合
①创建数据
// 字面量创建 (顾名思义看到[]代表数组 或者 简单的语法 推荐)
var 变量名arr = [值1, …, 值n]
// 内置构造函数创建空数组(脚下留心:Array首字母必须写)
var 变量名arr = new Array()
var 变量名arr = new Array(值1,…,值n)
②操作数组
获取:变量名arr[编号/下标/索引]
修改:变量名arr[编号/下标/索引] = 值 // 索引必须已存在
新增:变量名arr[编号/下标/索引] = 值 // 索引必须不存在
删除:需要接续内置方法 splice
数组长度:语法:变量名arr.length 强调:数组的最大下标/索引 变量名arr.length - 1
③ 数组索引
数组中每个值都有一个唯一的编号

  • 编号从0开始

  • 依次递增

  • 语法:变量名arr[索引] 获取数据
    3,数组和对象的区别
    明确:数组和对象都是用来存放多个数据
    区别:主要区别就是语法
    1.声明数组用 [] 中括号, 声明对象用 {} 大括号
    2.声明数组 里面 直接写 值,声明对象里面也是直接写值,但是只必须是键:值格式
    3.调用数组 变量名arr[下标], 调用对象 变量名obj.键
    脚下留心:调用对象,如果键是变量的话,得用其他语法 变量名obj[键]
    脚下留心:调用对象的方法切记 变量名obj.键()
    4,二维数组
    语法:
    var 变量名arr = [
    值,
    [值1,…,值n],
    [值1,…,值n],

    ]
    操作
    获取:变量名arr[下标][下标]
    修改:变量名arr[下标]…[下标] = 值
    5.传值方式
    内存:栈 堆
    栈:基本类型数据
    堆:复杂/复合类型数据
    基本类型:传值 修改其中一个变量数据,另一个变量【不】受影响
    复杂类型:传地址 修改其中一个变量数据,另一个变量受影响
    6.数组对象:
    属性
    长度 .length
    方法/函数

  • 常用
    划分成字符 join
    前入 unshift 后入 push
    前弹 shift 后弹 pop

  • 学习
    删除 splice
    翻转 reverse

  • 其他
    找数组内容 indexOf
    合并 concat
    7.for 和 for in 循环
    语法:
    for (key in 对象/数组) {
    // 会将对象中的键 挨个赋值给key这个变量 没有更多key就会退出循环
    }
    Day02
    1,数组对象
    ①forEach 语法:
    变量名arr.forEach(有一个实参) 实参是函数列席

    变量名arr.forEach(function(item, index, arr){ //三个 官方传递的 你直接用就可以
    item 就是数组的值
    index 就是数组的下标
    arr 数组本身
    })
    ②map语法:
    var newArr = 变量名arr.map(function(item, index, arr){ //规则同上
    // 数组里面有个3个值
    // map遍历3次
    // 数组里面有5个值
    // map遍历5次

    注:每次return的值会后压入到newArr新数组中
    return 值
    })
    注:语法和forEach一样 唯一的区别就是map有返回值 是一个新数组
    作用:修改数组数据,得到一个新数组(注:新数组长度和原来数组一样)
    ③ filter语法:
    var newArr = arr.filter(function(item, index, arr){
    return 条件 成立就把当前值后入到新数组中,不成立跳过下一个
    })
    2,字符串对象
    截取substr(起始位置,长度)含前
    substring(起始位置,结束为止) 含前不含后
    划分为数组:split
    替换字符串:replace(旧数据,新数据)
    找字符串内容:
    str.indexOf(内容) 找到返回下标,找不到返回-1
    str.lastIndexOf(内容) 找到返回下标,找不到返回-1
    Day03
    3.数学对象
    Math
    常用(Math.)
    ceil()、floor()、
    向上取整 向下取整
    round()、pow(x,y)、sqrt()、random() ***
    四舍五入 x的y次幂 求平方根 随机数(0~1 最小0.01 最大0.99)
    了解
    PI
    圆周率
    max()、min()、abs()、
    求最大 求最小 绝对值
    数字转换进制(周边)
    内容.toString(你要转换的进制)
    parseInt(内容,当作几进制来转换)
    随机数公式:Math.floor(Math.random() * (max-min+1)+min)
    4,时间对象:
    Date
    语法:var time = new Date() // 当前=
    var time = new Date(2019, 11, 05, 22, 33, 55) // 指定(注:00是12月)=
    var time = new Date(‘2019-12-05 22:33:55’) // 指定
    getFullYear()、
    getMonth()、 // 0-11 0代表1月
    getDate()、
    getHours()、
    getMinutes()、
    getSeconds()、
    getDay()、 // 星期几 0-6 0星期天
    getTime() 返回1970年1月1号至今毫秒数
    Day04
    1, BOM浏览器对象模型
    是什么: BOM是英文Browser Object Model的首字母缩写(浏览器对象模型 -> 规范)
    能干嘛: 使javascript有和浏览器对话的能力,如:获取浏览器信息,操作浏览器
    分类:
    ■ window
    (浏览器窗口对象,js中最大的对象)
    ● location*(地址栏对象 - 提供了对地址栏操作的方法和属性)
    ● history*(浏览历史对象,提供了对浏览器历史记录操作的方法和属性)
    ● screen(屏幕对象,获取屏幕的信息)
    ● navigator(浏览器对象,提供了获取浏览器信息的方法和属性)
    ● document*(文档对象, - 代表整个网页,DOM的根节点)
    ①■window对象*
    语法:属性
    innerWidth
    document.documentElement.clientWidth ie兼容
    innerHeight
    document.documentElement.clientHeight ie兼容
    方法
    alert()、prompt()、confirm()、open(待打开的网页,窗口名,打开窗口的外观)、close()、print()
    i 倒计时定时器setTimeout
    作用:打开网页等待指定时间后指定js代码(仅仅执行一次)
    语法:var 标识 = setTimeout(代码,毫秒)
    说明:
    毫秒1s = 1000ms
    代码 直接写函数
    代码 “函数名()” 脚下留心:引号必须写 不写则直接出发,写了之后底层在指定时间后出发
    每一个定时器都会返回一个唯一的标识,用于后期清除

作用:清除倒计时定时器
语法:clearTimeout(标识)
ii 间隔定时器setInterval
作用:指定时间不断重复执行js代码(一直执行)
语法:var 标识 = setInterval(代码,毫秒)
说明:
毫秒1s = 1000ms
代码 直接写函数
代码 “函数名()” 脚下留心:引号必须写 不写则直接出发,写了之后底层在指定时间后出发
每一个定时器都会返回一个唯一的标识,用于后期清除

作用:清除倒计时定时器
语法:clearInterval(标识)

iii 两种定时器区别
倒计时定时器:只执行一次(setTimeout clearTimeout)
间隔定时器:重复执行
② navigator对象 : 是专门用来获取浏览器信息的
语法:
内部代码
appName 浏览器名称
appVersion 返回浏览器的平台和版本信息。
platform 浏览器的操作系统平台。
userAgent 用户代理信息(UA 作用:获取用户什么浏览器) *
cookieEnabled 是否支持cookie
③ location对象: 就是来存储浏览器的地址栏内的信息的
属性和方法 描述
href* 1-获取地址栏网址2-修改地址栏网址(跳转网页),注:给href属性赋值相当于跳转指定网址
reload() 刷新当前网页 location.href = location.href 或 location.reload()
④ history对象 :是专门用来存储历史记录信息的
属性和方法 描述
length 获取历史记录个数
go(参数)* 跳转指定的历史记录页参数:1 前几一个、-1 后退一个、2 前进2个、 -2 后退2个
forward() 打开下一个网页(前进 ->)
back() *** 打开上一个网页(后退 <-)
⑤ DOM文档对象模型
i HTML DOM
语法:
方法1:a.先给标签增加ID属性,b.然后直接id属性值获取标签对象(不推荐,代码多了可读性不强)
方法2:使用JS官方提供的语法
var 变量名 = document.getElementById(‘ID属性值’) // *
var 变量名 = document.getElementsByClassName(‘class属性值’)
var 变量名 = document.getElementsByTagName(‘标签名’)
var 变量名 = document.querySelector(‘选择器’) // 仅一个标签对象*
var 变量名 = document.querySelectorAll(‘选择器’) // 多个*
注意:
内容
上述代码:在HTML中,叫:标签/标记
在JS中, 叫:标签/标记对象(默认标签有哪些属性,这个对象就可以用哪些属性。)
在DOM中, 叫:节点/元素
常用的属性和方法:
标签对象.innerHTML 获取指定节点的内容(包括html标签)
标签对象.innertText 获取指定节点的内容(只获取文本内容)
标签对象.getAttribute(属性名) 获取指定的属性
标签对象.setAttribute(属性名,属性值) 设置属性
标签对象.removeAttribute(属性名) 移除属性
Day05
1, 事件 DOM
i 事件种类
鼠标
单击 click
双击 dblclick
移入 mouseover
移出 mouseout
按下 mousedown
松开 mouseup
右击 contextmenu

键盘
按下 keydown
松开 keyup
表单
表单提交 submit
表单重置 reset
失去焦点 blur
获取焦点 focus
下拉改变 change

页面
页面加载完毕执行 load (思考:js代码写在head好还是body结束前面好? body结束前面)
网页尺寸改变 resize (window.innerWidth || document.documentElement.clientWidth)
网页滚动条 scroll (发现页面快到底部了 显示返回顶部标签)
2,this
普通函数中的this window对象
对象方法中的this 就是对象本身
事件中的this 事件源(标签对象)
3 ,核心DOM (1 获取页面标签对象)
i DOM的分层结构 / 树形结构 / 节点树
节点操作(语法)
1)取子节点
节点.firstChild 获取第一个子节点
节点.lastChild 获取最后一个子节点
节点.children 获取所有子节点(不计算空白节点)
节点.childNodes 获取所有子节点(计算空白节点)
2)获取兄弟节点
节点.nextSibling 获取下一个兄弟节点
节点.previousSibling 获取上一个兄弟节点
3)获取父节点
节点.parentNode 获取父节点
4)获取文本节点的值
节点.nodeName 获取节点名称(获取当前是p节点,还是b节点等等)
节点.nodeValue 获取节点值(限文本节点)
获取表单内容统一同 对象.value
5)节点属性

  •                     nodeType               	nodeName	             nodeValue
    

元素节点 1 大写标签名 null
属性节点 2 属性名 属性值
文本节点 3 #text 文本内容
ii 核心DOM(2 增删改节点)
节点创建
节点创建:document.createElement(节点名称);
创建文本节点:document.createTextNode(文本内容);
创建节点属性:节点.setAttribute(属性名,属性值);
节点追加
给指定父节点追加最后一个子节点: 父节点.appendChild(待追加的节点)
在指定节点前追加新节点: 父节点.insertBefore(新节点,旧节点)
节点删除
父节点.removeChild(子节点)
iii 获取元素的非行间样式(了解)
行内:标签对象.style.要获取的属性
行内&内嵌&外嵌&
window.getComputedStyle(标签对象).要获取的属性
标签对象.currentStyle.要获取的属性
iv 获取元素的偏移量
offsetLeft 获取左偏移量
offsetTop 获取上偏移量
offsetWidth 获取元素布局宽度(内容宽度 + padding宽度 + border宽度)
offsetHeight 获取元素布局高度(内容高度 + padding高度 + border高度)
v 严格模式

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!