JavaScript学习笔记
JS基本内容
JS简介:
JS让网页可以互动,是web编程语言
JS是事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序
事件如click,对应事件句柄为onclick。事件句柄就是在事件单词前添加一个on,事件句柄是以HTML标签的属性存在
上面代码中,window可以省略不写
而且需要注意的是,第一条语句后面如果换行,则不需要分号
暴露在脚本块中的程序,在页面打开时执行,自上而下
javascript的脚本块在一个页面当中可以出现多次,且位置也没有要求
强类型:
java是强类型语言,编译阶段,数据类型等就固定,直到最终内存释放,一直都不变
javascript是弱类型语言,没有编译阶段,一个变量可以随意赋值
JS函数:
方式一:function 函数名(形式参数列表){函数体}
方式二:函数名 = function(形式参数列表){函数体}
JS函数没有重载一说,如果两个函数重名,即使形参不同,后面一个函数也会覆盖前面那个函数
这段代码只会弹出两次hello javascript!
全局变量与局部变量:
全局变量是在函数体之外声明的变量,生命周期随着浏览器的存货
局部变量是在函数体中声明的变量,包括形参,函数执行结束,局部变量就释放
如果在函数中,局部变量前未加var,那么改该变量将变为全局变量
数据类型:
JS中的变量声明时不需要指定数据类型,但是赋值时,每一个数据还是有类型的
原始类型:
- Undefined、Number、String、Boolean、Null
引用类型:
- Object以及Object的子类
使用typeof可以在程序的运行阶段动态获取变量的数据类型,格式为:typeof 变量名,结果为一下6个字符串之一(即需要带双引号)
- undefined、number、string、boolean、object、function
JavaScript中没有equals方法,请直接使用==
Undefined类型只有一个值,这个值就是undefined
常用函数
Number中常用函数:
- isNaN(变量)
- parseInt(变量)
- parseFloat(变量)
- Math.ceil(变量)
String中常用函数:
- indexOf
- lastIndexOf
- replace
- substr
- substring
- split
Object:
属性:
- prototype(最常用)
- constructor
函数:
- toString
- valueOf
- toLocaleString
类的定义和函数定义,不能说一模一样,只能说完全一样
区别在于使用时,类使用new来创建,函数则直接调用
稍微深入
JS类中定义函数及prototype用法:
同时,因为new出来的String也是Object,那么String也可以通过prototype添加函数
比较Java和JavaScript的类的定义与创建对象
// java定义类
public class User{
private String username;
private String pasword;
public User(){}
public User(String username,String password){
this.username = username;
this.password = password;
}
}
// java创建对象
User user = new User();
User user = new User("zhangsan","123");
User = function(username,password){
this.username = username;
this.password = password;
}
var u = new User();
var u = new User("zhangsan");
var u = new User("zhangsan","123");
双等于和三等于
双等于比较值,三等于全都比较(类型)
JS常用事件:
- blur:失去焦点
- focus:获得焦点
- click:鼠标单击
- dblclick:鼠标双击
- keydown:键盘按下
- keyup:键盘弹起
- mousedown:鼠标按下
- mouseover:鼠标经过
- mouseout:鼠标离开
- mouseup:鼠标弹起
- reset:表单重置
- submit:表单提交
- change:下拉列表选中项改变,或文本框内容改变
- load:页面加载完毕
回调函数与调用:
事件注册的集中方式:
- 方式一:直接在html语句中加入事件
- 方式二:html给定id,然后在script中获取id,再用id注册事件
- 方式三:匿名函数注册事件
- 方式四:整合起来,不用中间过程,有点像Java中的链式
JS执行顺序:
JS一般放在内容的后面,如果想放在内容前面,最好加上onload表示页面加载之后再执行js代码
JS修改属性值:
JS捕捉回车
void
void运算符执行表达式,但不返回任何结果,在超链接中可以运用上
javascript:表示后面接的是一段JavaScript代码,而不是路径
void(0)表示不返回任何结果
首页
尾部
点击
数组变量
JavaScript中的数组遍历,如果使用for in语句,与Java有些不一样
上述输出都是数组下标,而不是数组元素
如果是对象的话,for in就变成了属性名,此时为字符串
DOM
ECMAScript是js基础内容,DOM是文档对象模型,对HTML中的节点进行操作;BOM是浏览器对象,对浏览器本身操作,如前进、后退、弹窗等
BOM顶级对象是window
DOM顶级对象是document,实际上BOM包括DOM

相互影响
innerHTML
正则表达式
正则表达式主要用于格式匹配
复习了一遍,然后也在菜鸟上又看了一遍
对于自己来说,贪婪匹配,前置约束等内容不太熟悉
反向引用
最简单最有用的应用:查找文本中两个相同的相邻单词的匹配项的能力
如:
var str = "Is is the cost of of gasoline going up up";
var patt1 = /\b([a-z]+) \1\b/ig;
document.write(str.match(patt1));
修饰符
正则表达式的标记(修饰符)用于指定额外的匹配策略
标记不写在正则表达式里,标记位于表达式之外,如上面反向引用的最后面的ig
- i表示不区分大小写
- g表示全局匹配
- m表示多行匹配
- s表示特殊字符圆点
.中包含换行符\n(默认情况下的.匹配除换行符\n之外的任何字符)
JS的正则
方式一:
var regExp = /正则表达式/flags
方式二:
var regExp = new RegExp("正则表达式","flags")
邮箱验证
prototype+正则
在低版本的IE中,trim函数不能使用,这时需要通过动态扩展prototype结合正则表达式来进行重写trim函数
表单验证

注册界面
用户名:
密 码 :
确 认 :
正则表达式网上抄的,innerHTML中的内容写在head中的style里面
可以把点击按钮进行验证,改成onblur,这样条内容都会验证,而不是全部写完了再验证
复选框
抽烟
喝酒
烫头
周期函数
有时候我们需要周期性执行某函数,那么此时需要用到周期函数
确认confirm
后退:
window.history.back()
window.history.go(-1)
网址:
window.location.href
顶级窗口
// 窗口1
// 窗口2
JSON
数据交换格式
eval函数
使用json数据
员工列表
员工编号
员工名字
员工薪资
总共0条数