博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JAVA-WEB】JavaScript
阅读量:4200 次
发布时间:2019-05-26

本文共 7951 字,大约阅读时间需要 26 分钟。

JavaScript

前言:在Java或者类java的学习中,需要积累对象的属性以及方法。这对于如何使用JAVA对象使之为己所用是很有帮助的,尤其对于初学JAVA或者刚开始接触编程的小菜鸟来说是很重要的。毕竟在初学阶段我们不生产方法,只是方法的搬运工。

概述

网页脚本语言,由浏览器解释执行;

目的:校验表单数据,页面特效;嵌入HTML实现
嵌入HTML的方式:可以放在任何位置
方式一:内部,写在<script type””>
方式二:外部,JS单独写在一个文件被引用

定义变量

基本数据类型

原始数据类型(5种)

数字型Number、字符串型String、未定义类型undefuned、布尔型Boolean、空Null

查看原始数据类型:alert(typeof bianliangming);
NaN不是数字的数字类型

变量

JS是一门弱类型语言:定义变量时,不需要规定其数据类型。

定义变量的关键字:var
Es6中定义常量const

全局变量与局部变量

全局对象

函数体内的变量前不加var则是全局变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

局部对象

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。

在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。

全局作用域与函数作用域

全局变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。

运算符

算术运算符、逻辑运算符、比较运算符、位运算符、三目运算符、赋值运算符

一元运算符: ++ – +(正) -(负)
比较运算符: > < >= <=
逻辑运算符:&& || !
算术运算符:+ - * / %
赋值运算符:= += …
三元运算符: 表达式 ? 值1 : 值2;
算术运算符:NaN
其他运算符:void拦截跳转页面void(跳转到新的执行)
语法格式:herf=”javascript:void()”
Delete运算符:删除对象中的属性,不能删除未定义的属性

数据类型的自动转换

当运算符期望值与实际值不同时,会发生数据类型转换;

NAN特性

任何类型与NaN的运算结果均为NaN

NaN参与的运算,结果都为fasle,除了(!=)
NaN 参与数学运算 结果都为NaN

其他类型转为number

字符串转成数字,可以转时会转成数字类型,否则转换成NaN

boolean: true为1 false 为0

其他类型转boolean

number:非0为true,0和NaN为false,

string: 除了空字符串(""),其他都是true
null 和 undefined:转为false
对象:所有对象都为true
字符串比较小大:如果长度一致按照字典顺序比较 长度不一致 那谁的长度长那就谁大
== 与===的区别
== :会发生自动类型转换
=== :会比较类型

对象

JS是一门基于对象的语言

基于对象:不能由原生的对象派生出新的对象。换句话说,不存在继承关系

关键字

保留关键字

Abstract\boolean\byte\char\conat\defualt\delete\

内置对象

带有属性和方法的特殊数据类型

Number\String\Date\Arrary\Boolean\Math\RegExp\Global

String

创建语法一:new String();

创建语法二:String();
创建语法三:var s=“”;
属性:length长度
方法

CharAt();返回在指定位置的字符

charCodeAt();返回在指定的位置的字符的Unicode编码
concat();连接字符串
indexOf();检索字符串
lastInexOf();从后向前搜素字符串
substring() 提取字符串中两个指定的索引号之间的字符。
toLowerCase() 把字符串转换为小写。
toUpperCase() 把字符串转换为大写。
mach();匹配正则表达式
replace();替换与正则表达式匹配的子串
split() 把字符串分割为字符串数组。
slice();提取片段,负值表示从后往前数
trim():去除字符串两端的空格
ES6拼串:string${var}${var}
node.JS封装了JS语言,可供前端人员做后台开发

Number

创建对象方式一:var name=new Number(100);

创建对象方式二**:var name=Number();**
方法

console();将数字转成字符串

toFixed;把数字转换为字符串,指定小数点的精确度,
toString() 把数字类型转成字符串类型
toPrecision() 把数字格式化为指定的长度。也就是小数后面保留几位返回字符串类型数字

Date日期

创建对象方式:var date=new Date();

方法

toLocaleDateString();将日期格式改为年/月/日 上午(下午)时:分:秒

toLocaleFormat(预设格式);仅支持火狐浏览器
getTime();获取从1970-01-0100:00:00当到前毫秒值

Math

该对象不需要创建 直接对象名点上方法

方法

Math.random();随机产生0----1 之间的随机数

Math.round(2.36); 对小数进行四舍五入 得到一个整数
Math.min(15,25); 取最小值
Math.max(15,25);取最大值
Math. abs(-2) 返回数的绝对值。
Math.floor(2.6);向下取整
Math.ceil(3.82);向下取整

数组对象

JS5没有集合概念(ES6有),但是长度可变,可充当集合

创建数组对象:arr=new Array(,,,);arr=[,,,]
属性:size,length
数组中没有角标越界,取不到时会返回undefined
数组中可以存储多种数据类型
方法

concat();数组拼接

Join(拼接符)将数组一特定的格式转成字符串;
Pop();删除数组中最后一个元素
Push();向原数组末尾增加元素,可以一次添加多个
Reverse();反转数组
Sort();按ASCll码表排序
Sort(比较器—就是一个function);按照元素大小排列,需传一个比较器
Splice(要删除的索引开始位置,要删除的个数,添加的新元素从删除处开始[
可选]);

(ES6新增方法)

copyWithin(复制指定位置,起始复制位置,复制个数);

entries();返回一个数组的迭代对象
every();检测数组是否都符合条件
fill();
find();查找数,返回值
forEach();
from()==toCharArry();
forEach();
includes();==contains();
keys();从数组中创建一个包含数组的键的迭代对象
unshift();往前增加数据
isArray();判断是否为数组Arrary.isArrary(目标数组);
map();指定函数处理数组每个元素,返回新数组
filter();过滤,返回符合条件的所有元素的数组,根据返回值过滤
reduce(起始值,元素);将数组元素计算为一个值
some();检测数组中是否有符合条件的元素

ES6箭头语法:简写匿名函数(入表达式)指向父作用域的this

Boolean对象

函数

“函数”

Function(*****): 代表函数

JS核心,等同于Java中的类与方法
定义函数的语法一:new Function(‘形参’,‘方法体’);(用引号引起);调用fun();
定义函数的语法二:function(canshu,…){方法体}参数无需数据类型;调用fun();
定义函数的语法三:funcation fangfaming(canshu ,…){fangfati };调用fangfaming();
属性: length:形参的个数
使用: 函数名称(实参列表);
特点
1.函数的调用,只与函数名称有关,与实参列表无关
2.函数内部有内置对象 arguments 封装实参数组

返回值

可以不用定义是否有返回值;也无需明确的返回类型

返回数据用return;

函数重载

同Java

参数

JS中传参无限制(小于25个),按需拿取数据

Hanshu.length:获取形参的个数
Arguaments:参数对象,在函数内部的隐藏对象,接受函数的全部实参,实质为数组。
形参默认值,在定义出给形参赋值,调用时有传参就用传过来的,无传参是用默认值(ES6)
输出语句:document.writre();在页面上打印信息
**闭包closure:**在函数中可以访问到局部变量,利用返回值;
函数的嵌套会使闭包趋于复杂
Console.Log在控制台输出

全局方法对象

Global

特点:方法可以直接调用
方法:isNaN判断一个值是否是NaN
parseFloat();从第一个字符开始判断,遇到不是数字字符的位置就结束掉
从左向右依次查找,每一位是否是数字,直到遇到不是数字为止。将前边的值转为数字

RegExp

正则表达式对象定义方式一:var regx=/正则表达式/模式;(i不区分大小写的模式,g全文匹配)

正则表达式对象定义方式二:var regx=new RegExp(“正则表达式”,“模式“);
方法

test();JS中行号敏感 需加开头^和结尾$,匹配

exec();截取符合条件的数据,需要全文匹配,否则每次都会从头开始匹配
replace();替换与正则表达式匹配的子串,替换选择全文匹配
split();把字符串分割为字符数组
search(正则或者字符串);==indexof();
match();找指定的值或正则,返回找到的串

两个思想

BOM

Browser Object Model浏览器对象模型,将浏览器的各个组成部分看作对象,当HTML文档加载进浏览器之后,浏览器就会创建这些对象

对象分类

window对象

location地址栏对象
history历史记录对象
navigator浏览器对象
scream屏幕对象
availHeight 获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。 availWidth 获取系统屏幕的工作区域宽度,排除 Windows 任务栏。
height 获取屏幕的垂直分辨率。 width 获取屏幕的水平分辨率。

Window 对象

**格式:**window.方法名();window可以省略

方法

  • 弹框

    alert();弹框
    Confirm()带有确认和取消按钮的弹框
    prompt(‘要显示的话’,默认文字) 显示可提示用户输入的对话框。

  • 定时器

    SetInterval()按照指定的周期(以毫秒计)来调用函数或计算表达式。 循环执行
    clearInterval() 取消由 setInterval() 设置的 timeout。
    setTimeout() 在指定的毫秒数后调用函数或计算表达式。 只执行一次( 参数:参数1:字符串(js语句)或者 函数对象、 参数2:毫秒值。)
    clearTimeout() 取消由 setTimeout() 方法设置的 timeout。

  • 打开与关闭

    open():打开新窗口( 参数:打开目标的URL、返回值:返回新打开窗口的window引用)
    close():关闭窗口* 谁调用我 , 我关谁

获取其他对象的属性:

history :对 History 对象的只读引用。

location :用于窗口或框架的 Location 对象。
Navigator 对 Navigator 对象的只读引用。
Screen 对 Screen 对象的只读引用。
ocument:对 Document 对象的只读引用。

Location对象

Location:地址栏对象、获取方式:可以用window对象中的属性获取

属性:

href:设置或获取当前的URL

history 对象
History:历史记录对象、获取方式:可以用window对象中的属性获取

**方法:**go:1:前进-1:后退

DOM

在JS部分编写代码,可以实现动态操作body部分

DOM: Document Objec Modle 文档对象模型:将HTML的各个组成部分看做一个对象
DOM组成部分:

Element 标签对象

Attribute 属性对象
Comment 注释对象
Text 文本对象
document 整个的HTML文档对象
Node:节点对象、
Doucument 文档对象

Document:window.document获取文档对象

属性:

body可以获取body标签对象

title 属性获取文档标题
lastModifile 文档最后一次修改时间
url 地址栏的地址

通过文档对象获取标签对象的几种方式:

document.body获取body标签

获取element对象:

getElementById();通过ID属性获取唯一的元素

getElementByTagment();通过标签名获取元素对象数组
getElementByName();通过name属性值获取元素对象数组
getElementByClassName();通过class属性值获取元素对象数组
getElementByName();针对表单标签的获取元素的方法,返回数组

动态创建元素:

.createElement();创建标签对象

.createTextNode();创建文本对象
.createAttribute();创建属性对象
.createComment();设置一行注释

属性:

A.appendChild(B);将B放入A中

A. setAttributeNode(B);设置属性以及属性的值
.innerHTML;获取两个标签之间的内容,包括子标签
.innerText;获取两个标签之间的内容,只获取文本
.textContent;等同innerText
.style;给标签对象设置样式,样式中有-的需要去掉且首字母大写拼接在其后
.textCSS

删除元素:

A.removeChild(B);将A中的B删除

A.remove();删除A

获取属性:

getAttribute();获取属性值

. getAttributeNode();获取属性的对象
在原有的属性设置上再添加属性,使用+=

DOM树 父节点子节点所构成了一个DOM树

事件

概念:事件源,事件名,事件关联(2种方式),事件处理

事件的关联方式一:事件=“处理函数”
事件关联方式二:对象.事件.处理函数
Tips:善用this
给所有某对象关联事件:获得数组对象,遍历数组

JS中注册监听的方式

监听器:一个对象。当事件源上发生了事件,就执行对象中的某些方法

注册监听:将监听器绑定到事件源上,监听事件的发生
方式一:定义标签时添加事件
<标签 事件名=”函数”>
**方式二:**获取元素对象,动态添加对象
Document.getElementByXXX(“名字”)获取元素对象
元素对象.事件名=function(){}

JS中常见事件

  • 焦点事件:(针对表单验证)

    获取焦点:onfocus
    失去标点:onblur

  • 点击事件

    单击onclick
    双击ondblclick

  • 键盘事件

    某个键被按下onkeydown
    按下去的键被松开onkeyup
    某个键按下松开之后onkeypress

  • 鼠标事件

    鼠标按键按下onmousedown
    鼠标按键松开onmouseup
    鼠标移上onmouseover
    鼠标移开onmouseout
    鼠标移动onmousemove

  • 表单事件

    点击确认按钮onsubmit
    点击重置按钮onreset

  • 加载与卸载事件:

    完成加载onload
    用户退出页面onunload
    其他事件:
    针对表单:域的内容被改变onchange
    文本被选中onselect

事件对象

Event由浏览器创建,在调用事件处理函数时传递给处理函数

属性:.keyCode获取按下键码
.witch获取鼠标的左中右键
.target获取实际触发该事件的元素对象
.currentTarget返回绑定触发事件监听器的元素,
Target与currentTarget的区别
Target获取的是实际触发项目
currentTarget获取的是绑定的,在层嵌套中存在
节点对象
节点的层叠关系:父子关系、兄弟节点
节点的类型:标签节点、注释节点、文本节点
节点对象的组成:
nodeType 节点类型 可返回节点的类型
nodeName 节点名称 属性含有某个节点的名称。
元素节点的 nodeName 是标签名称
属性节点的 nodeName 是属性名称
文本节点的 nodeName 永远是 #text
文档节点的 nodeName 永远是 #document

nodeValue	节点值	对于文本节点,nodeValue 属性是所包含的文本。	对于属性节点,nodeValue 属性是属性值。	对于注释节点,nodeValue 属性注释内容。	nodeValue 属性对于文档节点和元素节点是不可用的。

通过节点关系查找节点

document.all 获取文档中所有的节点
从一个节点出发开始查找:
parentNode 获取当前元素的父节点。被用来改变文档的结构。
childNodes 获取当前元素的所有下一级子元素。
firstChild 获取当前节点的第一个子节点。最普遍的用法是访问某个元素的文本:
lastChild 获取当前节点的最后一个子节点。
nextSibling 获取当前节点的下一个节点。(兄节点)
previousSibling 获取当前节点的上一个节点。(弟节点)
获取元素对象的属性
parentElement 获取当前元素的父元素对象(不会获取到空文本,或者注释)
firstElementChild 获取父元素的第一个标签对象(不会获取到空文本,或者注释)
lastElementChild 获取父亲元素的最后一个标签对象(不会获取到空文本,或者注释)
previousElementSibling; 获取上一个兄弟元素对象(不会获取到空文本,或者注释)
nextElementSibling 获取下一个兄弟元素对象(不会获取到空文本,或者注释)
自定义函数

事件的冒泡现象

事件冒泡:多个元素嵌套,给每个元素都绑定了事件时,在触发最里边的事件时

事件冒泡:当元素有了嵌套关系后,我们点击了最里层的元素后,外层的事件也会触发
可以用事件对象里面的方法来阻止冒泡行为
stopPropagation() 不再派发事件。/阻止冒泡行为
preventDefault() 通知浏览器不要执行与事件关联的默认动作。阻止元素自带的默认行为

转载地址:http://clfli.baihongyu.com/

你可能感兴趣的文章
【数据库之mysql】mysql的安装(一)
查看>>
【数据库之mysql】 mysql 入门教程(二)
查看>>
【HTML5/CSS/JS】A list of Font Awesome icons and their CSS content values(一)
查看>>
【HTML5/CSS/JS】<br>与<p>标签区别(二)
查看>>
【HTML5/CSS/JS】开发跨平台应用工具的选择(三)
查看>>
【心灵鸡汤】Give it five minutes不要让一个好主意随风而去
查看>>
【React Native】Invariant Violation: Application AwesomeProject has not been registered
查看>>
【ReactNative】真机上无法调试 could not connect to development server
查看>>
【XCode 4.6】常用快捷键 特别是格式化代码ctrl+i
查看>>
【iOS游戏开发】icon那点事 之 实际应用(二)
查看>>
【iOS游戏开发】icon那点事 之 图标设计(三)
查看>>
【IOS游戏开发】之测试发布(Distribution)
查看>>
【IOS游戏开发】之IPA破解原理
查看>>
【一天一道LeetCode】#45. Jump Game II
查看>>
【一天一道LeetCode】#46. Permutations
查看>>
【一天一道LeetCode】#47. Permutations II
查看>>
【一天一道LeetCode】#48. Rotate Image
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#57. Insert Interval
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>