(纪录lvyestudy的js教程关键点)
基础部分
1.开始部分
- 调用js的方式分为直接夹
<script>
,还有为script使用src 调用本地或者网络的.js类型文件 - 使用alert弹出对话框 其中("")夹要弹出的内容,这里是字符串,如果是变量不需要引号,实际上alert其中也有类型转换的存在。
- 现代模式不明
use strict
暂时只看到规范书写的作用
2.变量
- 使用let创建变量,老版本中使用var(其中还有差别),正常情况下用=赋值,变量名字区分大小写,不能数字开头。也可以用$和_但不能使用-,注意避免保留字。
- 使用const定义不改变的量,但形式依旧是
const = "#00FF"
,不可缺少引号。 - 中文也可使用,但是不建议使用。
3.数据类型
- js中数学计算报错也是NaN,可以安全进行计算,也使用let进行定义,bigint用于2的53次方以上的数字。
- string必须要放在引号中,js中无char,字符字符串都可使用,反引号中使用
`ex:${..}`
进行功能扩展。 - 对 typeof x 的调用会以字符串的形式返回数据类型。
- 用number对类型进行转换,转换为数值类型。
4.运算符
- 运算元即运算符应用的对象,如果是-1这种负号即是一元运算符,3x5x即是二元运算符。加号也可用于字符串连接。针对二元运算符的计算中,有一个字符串类型其余会转换成字符串类型。一元运算符优先级最高,赋值运算符优先级最低。
5.类型转换
-
parseInt和parseFloat
这两种方法分别是转换为整型和浮点型,.toString()
转换为字符型,这里.放在变量后。
6.基本语法
- 注意每一句加分号以及注释方式://单行注释内容/多行注释内容/
流程控制
- 三个基本结构:顺序结构、选择结构、循环结构。
- 选择结构
选择结构采用,if和switch此种,惯用if不多介绍就是基本的if else用法。
switch也是惯用的代码形式:
{
case 取值1:
语块1;break;
case 取值2:
语块3;break;
……
case 取值n:
语块n;break;
default:
语句块n+1;
}
- 循环结构也是:for、while、do..while;不多说dowhile也是先执行一遍而while是先判断。
- 跳转语句
break语句与continue语句的主要区别是:break是彻底结束循环,而continue是结束本次循环。
基本函数
- 基本定义调用
function
,大体框架也是C语言类似写法。eval()函数可以把一个字符串当做一个JavaScript表达式一样去执行它。isFinite()函数用来确定某一个数是否是一个有限数值。使用isNaN()函数来判断一个值是否是NaN值。 - escape() 和unescape()一个把特殊符号转
%..
形式编码代替,un的功能则是反过来
字符串对象
- 字符串属性
变量名.length
求得字符串长度。
- 方法:match、search、replace、indexOf、charAt
- match()方法就是用来检索一个字符串是否存在。如果存在的话,返回要检索的字符串;如果不存在的话,返回null。
- search()方法返回的是子字符串的起始位置,如果没有找到任何匹配的子串,则返回-1。检索从0开始。
- indexOf也是返回首次出现位置,至于和search的区别牵扯到后面的正则表达式的问题。以下是网页相关结果:
首先要明确search()的参数必须是正则表达式,而indexOf()的参数只是普通字符串。indexOf()是比search()更加底层的方法。
如果只是对一个具体字符串来查找,那么使用indexOf()的系统资源消耗更小,效率更高;如果是查找具有某些特征的字符串(比如查找以a开头,后面是数字的字符串),那么indexOf()就无能为力,必须要使用正则表达式和search()方法了。很多时候用indexOf()不是为了真的想知道子字符串的位置,而是想知道长字符串中没有包含这个子字符串。如果返回索引值是-1,那么说明没有:不等于-1,那么就是有。所以一般情况下indexOf比search更省资源。
- replace方法
stringObject.replace(正则表达式,替换字符)
用于字符串的替换。 - charAt()方法,同Java中获取字符,也是从0开始找。
- 其余方法
- 大小写转换使用toLowerCase()和toUpperCase()这两种方法来转化字符串。
- 字符串连接:
字符串1.concat(字符串2,字符串3,…,字符串n);
- localeCompare()方法用本地特定的顺序来比较两个字符串,比较完成后,返回值是一个数字。大则返回1,等于则返回0,否则返回-1。
- 使用split()方法把一个字符串分割成字符串数组,框内是分割符,分割符并不作为返回数组元素的一部分
- 使用substring()方法来提取字符串中的某一部分字符串,
字符串.substring(开始位置,结束位置)
日期对象
- 创建:
var 日期对象名 = new Date();
- 甚至不用创建对象直接使用Date()方法返回系统当前日期时间,非常简便。
- 后续返回年月日,使用年:getFullYear() 月:getMonth()这里月注意从0开始 日:getDate(),get改为set则变为设置年月日。
- 返回时分秒,使用:getHours()、getMinutes()、getSeconds(),同样设置改为set进行设置。
- 日期对象通过
.toString()
进行转换成字符串的操作,使用toUTCString()方法可根据世界时间(UTC)把Date对象转换为字符串,toLocalString()方法把本地时间转换成字符串。 - 使用getUTCDay()方法可以根据世界时间(UTC)返回表示星期几的一个数字。
数组对象
- 基本内容
- 创建方式
var myarray = new array()
,基本使用方式即正常数组方式,有一点不同于编译语言中的是js的弱类型,所以数组中存放的类型并没有严格的定义,甚至可以每一个数组元素类型都不同。
- 常用方法
-
slice()
第一个输入为开始位,第二个为结束位(取不到),用于字符串剪切。 -
unshift()
,在开头插入数组元素。 -
shift()
在开头删除数组元素。 -
push()
数组元素尾部插入。 -
pop()
数组元素尾部删除。 -
to.String()
和join()
在数组中区别在于join方法中可输入分割符号在每个元素间隔中连接字符串,而to.String()仅仅在数组用于转换字符串。 -
concat()
用于数组的连接。 -
sort()
用于正向排序而reserve()
用于反向排序。
数值对象
- 基本内容
- 分为两种,Math和Number两类,Number入门中用的不多。这里主要考虑Math类,Math不需要进行对象创建直接调用即可,比如PI、E、LOG10E1等基本数学值。
- 常用数学类方法
- max求最大,min求最小,pow(x,y)返回x的y次幂,abs返回绝对值,round取整,random求0到1的随机数,最后注意ceil取大于等于的数,floor取小于等于的数。
窗口对象
- 基本概念
- 这里窗口对象正式进入了js的核心技术部分,实际上是对浏览器窗口的操作,入门时暂时不考虑属性问题,在方法进行入门。
- 常用方法
-
对象.open/close()
可创建function专门用于打开关闭窗口,在新窗口创建指定的对象可控制所指向窗口的关闭。同时在input标签中也可直接调用window.close
关闭当前窗口。 -
resizeTo()和resizeBy()
其中to用于调整至指定大小,而by用于调整变化的数值,有两个单位为px的输入值,输入的第一个为水平方向第二个为垂直方向。 -
moveTo() moveBy()
也是同上作用,不过用于窗口的移动。 - window的子对象history用于前进forward和后退back,实际场景中有测试,注意并不是分页效果而是浏览器历史的进退。还有指定地址go方法,history的属性运用的较少。
- 定时器在很多地方进行使用,后续配合有很多,定时器:
setTimeout()
方法内的代码只会执行一次,而setInterval()
方法内的代码会重复性执行。setInterval()要用clearInterval()进行结束计时。
对话框
- 这里对话框应用包括三个:alert、confirm、prompt。
-
alert()
弹出框使用,其中也可调入变量或者换行等。 -
confirm()
弹出选择,返回的是个布尔类型,如果用户点击“确定”,则confirm()返回true。如果用户点击“取消”按钮,则confirm()返回false。confirm()方法往往都是和按钮结合使用。 -
prompt()
方法对话框用于输入并返回用户输入的字符串
文档对象
文档对象是window对象的子对象,目的在于操作html文档(相关:CSS文档流)。接下来列出常用的属性等。
- 文档对象属性
- .title属性,用于最顶上的页面的标题名(不是页面最顶上是窗口上的)。
fileCreateDate 文档创建日期
fileModifiedDate 文档修改时间(精确到天)
lastModified 文档修改时间(精确到秒)
fileSize 文档大小
- .URL地址属性来获取当前HTML文档地址或者设置文档的跳转地址。
- .fgcolor前景色(即背景前的比如字的颜色)、.bgcolor背景色 ,关于超链接:未被点击的连接linkcolor、alinkcolor被激活连接、vlinkcolor被访问过的颜色。这里一般应用css中的a类中的四种:link、visited、active、hover。
- 文件对象方法
- 输出内容
document.write("输出的内容")
非常常用,writeln()
则为自动换行
DOM对象 *
- 简介
全称“Document Object Model(文档对象模型)”,DOM就是一个接口,我们可以通过DOM来操作页面中各种元素。DOM树形结构即树状分父子节点,DOM节点操作非常基本注意掌握。 - 基本操作
getElementById()
以元素id选中,然后对其进行DOM对象的相关操作,还有一种getElementByName()
这种用的比较少因为name重复率较高。创建节点的思想基本是OOP思想,就是创造一个元素
creatElement()
或者文本对象creatTextNode()
进行一系列的操作,然后对象插入使用appendChild()
。在DOM中,每一个元素节点都被看做一个对象,因此我们可以像操作对象的属性那样给元素节点的属性赋值。
例子:
var e = document.createElement("h1");
var txt = document.createTextNode("绿叶学习网");
e.appendChild(txt); //把元素内容插入元素中去
document.body.appendChild(e);
不同于appendChild()
插入对象的内部,insertBefore()
则是插入当前对象的“末尾”。insertBefore()
有两个输入参数,所依靠的对象是父节点,第一个输入是创建的新节点,第二个输入是表明在这个节点之前插入。
- 结点删除操作:
obj.removeChild(oldChild);
obj是父节点,oldChild是其中子节点,若要删除整个父节点内容则直接调用父节点。 - 节点复制
obj.cloneNode(bool)
这里布尔类型中1代表示复制节点本身以及复制该节点下的所有子节点,而0代表仅仅复制此节点不复制子节点。 - 节点替换
obj.replaceChild(new,old)
obj是要被替换的父节点,new是替换的新节点,old是被替换的节点。注意替换时一定要注意找到被替换的父节点。 -
innerHTML
区别于innerText
前者返回包含的子元素,后者只返回文本,且后者不被FIREFOX支持。 - 另外关于CSS,在JavaScript中,对于元素的CSS操作,我们使用的是DOM对象中的style对象来操作。
JavaScript事件
基本内容
事件理解为用户对页面操作后,页面的一些行为。事件有两种调用方式:第一是在script标签中调用,二是在元素内部调用。一般是抽象一个元素后,通过所抽象的对象方法操作来实现一系列的效果。JavaScript是基于事件模型的语言。JavaScript事件,这可是JavaScript的精髓所在,也是JavaScript入门学习中的重中之重!常用方法
- 鼠标事件,鼠标事件都以on开头,如
onclick
即点击后产生的效果。鼠标移入和移出事件分别是onmouseover
和onmouseout
,鼠标的按下和松开事件分别是onmousedown
和onmouseup
- JavaScript事件通过以下3个事件来捕获键盘事件:onkeydown、onkeypress与onkeyup。这三个事件的执行顺序如下:onkeydown → onkeypress → onkeyup,即键盘按下、按住、松开。其中onkeypress只对数字和字母有效,对功能键无效。某些方面按下onkeydown基本和onkeypress差不多。
- 表单事件:onfocus表示获取焦点触发的事件,onblur表示失去焦点触发的事件。比如文本框输入时,如果光标不在即有文字提示那就是失去焦点事件。
对表单的更改即按下松开有onchange,onselect事件的具体过程是从鼠标按键被按下,到鼠标开始移动并选中内容的过程,这个过程并不包括鼠标键的放开,注意两者的效果区分在一个触发点上有不同。 - 编辑事件:禁止复制通过调用oncopy方法建立function再返回false就无法进行复制。同样有onpaste、oncut。其中onbefore未搞懂到底在什么之前,代码不可行。
- 页面相关事件:
onload这里出现个问题,js的代码时从上到下执行,若script在之前,对象对应的元素在后,有可能会报错,这里就要使用window.onload套一个函数,跳过执行部分,并且一般函数也不会从上到下先执行,他会先跳过。其余常用的两个有:onsize可以固定页面大小,onerror可以报错时的操作。