1.什么是JavaScript?
2.JavaScript语法
![](https://i-blog.csdnimg.cn/blog_migrate/c31ff755f482486bfde6c518fdfe9891.png)
6.字符串String常用方法
7.数组
定义:数组是一组数据的集合,在内存中是一段连续的内存空间。
特点:
数组定义时可以无需指定数组长度
存储数组无需指定具体类型,可以存储任意类型
创建:
①常规方式:
var myCars=new Array();
myCars[0]="benz";
myCars[1]="audi";
myCars[2]="BMW";
②间接方式-直接实例化:
var myCars=new Array("benz","audi","BMW");
③字面-隐式创建
var myCars = ["benz","audi","BMW"];
访问数组:通过指定数组名以及索引号码来访问某个特定的元素。
数组的遍历:
①普通for循环
for(j = 0; j < arr.length; j++) {
![](https://i-blog.csdnimg.cn/blog_migrate/62eb51ff78d0aec10c99f579513a6195.png)
在数组末尾插入元素: arr.push(value)在数组的末尾添加一个或多个元素,并返回数组的新长度。
删除数组末尾的元素:arr.pop()删除索引值最大的元素,并返回被删除的元素。
在数组的头部插入元素:unshift(value);在数组的头部添加一个或多个元素,并返回数组的新长度
删除数组的头部元素: shift();删除索引为0的元素,并返回删除的元素
数组和数组(或元素)的合并:con1
let arr=[1,2,3,4,5]
let newArr=arr.concat([6,7,8],9,10);
console.log(newArr,arr);
在数组中添加删除或替换元素: splice();在任意位置添加或删除元素,返回删除或被替换的值,如果没有被删除或替换则返回空数组;splice()方法会修改原数组的值.
只有一个参数时:从当前位置删除到数组末尾,返回被删除的元素:
let arr=[1,2,3,4,5];
let num1=arr.splice(1)
console.log(num1;arr)//num=[2,3,4,5];arr=[1];
有两个参数时,第一个值为删除的位置,第二个值为删除的个数:
let arr=[1,2,3,4,5];
let num1=arr.splice(2,3)//删除从索引值2开始的3个元素
console.log(num1;arr);// num1=[3,4,5],arr=[1,2]
有三个或者多个参数时,第一个参数替换元素的位置,第二个参数为替换的个数,后面的参数都为替换的新元素:
let arr=[1,2,3,4,5];
let num2=arr.splice(2,1,6,7,8);//从索引值2开始替换掉1个元素,并且插入6,7,8
//如果第二个值为0,则不替换,直接插入6,7,8;
console.log(num2,arr);//被替换的值num2=[3]; arr= [1,2,6,7,8,4,5]
指定字符连接字符串: join();数组的每个元素以指定的字符连接形成新字符串返回;
8.匿名函数及可变参数列表
1.匿名函数:没有名称的函数,相当于一个复杂的表达式,当只需要一次性使用函数时,使用匿名函数更有效。
创建:普通函数去掉函数名。
例:var z = function(x, y){
return (x + y) / 2;
}(23, 35);
使用匿名函数作为函数参数:在调用(将匿名函数作为参数的)函数里被调用执行了。
function test(a,b){
a+=1;
b(a);
}
//将匿名函数作为参数b带进函数test进行运算
test(3, function(result){
console.log(result);
});
可变参数:(类似于java中的方法重载)使用arguement内置对象来实现
function test() {
for (i=0,j=arguments.length;i<j;i++){
console.log(arguments[i]);
}
}
test(1,2,3,4,5,6);以上可处理同名函数不同参数时的情况。
9.浏览器内置对象及其属性和常用方法
①window对象
是js的一个内置对象,所有浏览器都支持window对象。它代表浏览器的窗口。所有全局JavaScript对象、函数和变量自动成为window对象的成员。全局变量是window对象的属性。全局函数是window对象的方法。
window对象属性:
window对象方法:
②window尺寸:
1. window.innerHeight:浏览器窗口的内部高度。
2. window.innerWidth:浏览器窗口的内部宽度。
③window时钟函数:
setTimeout() : 在指定的毫秒数后调用函数或计算表达式,会返回一个ID值
clearTimeout():方法可取消由 setTimeout() 函数设定的定时执行操作,方法的参数 必须是由 setTimeout() 返回的 ID 值。
setInterval():可按照指定的周期(以毫秒计)来调用函数或计算表达式
clearInterval() :方法可取消由setInterval() 函数设定的定时执行操作,方法的参数 必须是由 setInterval() 返回的 ID 值。
④window窗体方法:open()打开窗体、close()关闭窗体
10.history对象
history对象是window对象的一部分,可通过window.history属性对其进行访问。
history对象属性:
length 返回浏览器历史列表中的 URL 数量。
history对象方法:
11.location对象
Location 对象包含有关当前 URL 的信息,是window对象的一部分,可通过window.Location
属性对其进行访问。
location对象属性:
location对象方法:
12.事件处理
事件Event,事件源Source和事件处理函数Handler
①事件event对象:Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
②什么时候会产生event对象?
例如: 当用户单击某个元素的时候,我们给这个元素注册的事件就会触发,该事件的本质就是一个函数,而该函数的形参接收一个event对象.
事件通常与函数结合使用,函数不会在事件发生前被执行!
③事件源:
在事件中,当前操作的那个元素就是事件源。比如网页元素中a标签和input都有onclick事件,当点击a发生onclick事件时,事件源就是a标签,当点击input发送onclic事件时,事件源就是input。
事件处理函数:监听到事件源产生的事件后会进行的操作就是事件处理函数。
事件:
④js实现绑定事件监听的几种方法
1.行内绑定
在HTML的标签中通过onclick等属性进行绑定,绑定方式:on+事件名,在将所触 发的事件赋值给该属性。如:<button onclick="alert('123');">点击</button>
2.使用element.onclick进行事件绑定
通过操作DM元素,为DOM绑定事件(使用形式同行内绑定)
3.使用addEventListener()方法
使用 addEventListener() 方法,接受3个参数(要处理的事件名、作为事件处理程 序的函数、一个布尔值,这个布尔值为 true 表示在事件捕获阶段调用事件处理程序,为 false 则在事件冒泡阶段调用)。
addEventListener和onclick的区别: onclick事件会被覆盖,而addEventListener可以先后运行不会被覆盖, addEventListener可以监听多个事件。
常见的事件:
表单事件:
onsubmit:表单中的确认按钮被点击时发生的事件
如何阻止表单重复提交?
1.设置一个布尔值标记变量flag = true,当onSubmit事件出发后,将flag的值改为false,用if语句进行判断:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form id="f1" action="" method="get">
用户名:<input type="text" name="usrname">
<br><input type="submit" value="提交">
</form>
</body>
</html>
<script type="text/javascript">
var flag=false;
function dosubmit(){
if(flag==false){
flag=true;
return true;
}else{
return false;
}
}
var form = document.getElementById("f1");
form.onsubmit(dosubmit());
</script>
2.可设置提交按钮在提交一次之后不可用(也就变为灰色)。
3.函数
var x = function (a, b) {
return a * b
}
4.对象
对象:对象是JavaScript的引用数据类型。对象是一种复合值:它将很多值(原始 值或者其他对象)聚合在一起,可通过名字访问这些值。对象也可看做是 属性的无序集合,每个属性都是一个名/值对。属性名是字符串,因此我们 可以把对象看成是从字符串到值得映射。然而,对象不仅仅是字符串到值 的映射,除了可以保持自有属性,JavaScript对象还可以从一个称为原型的 对象继承属性。对象的方法通常是继承的属性。这种“原型式继承” prototypal inheritance)是JavaScript的核心特征。
1.访问
访问对象属性:1.通过对象名.属性 :book.author; 2.通过[]来访问,如果属性名为字符串:book["main title"] 。
访问对象方法:访问方法的变量名:book.function(2,3)
2.js常用内置对象及方法
String对象:字符串对象,提供了对字符串进行操作得到属性和方法。
length:获取字符串的长度。如:var len = strObj.length
toLowerCase():将字符串中的字母转成全小写。如:strObj.toLowerCase()
toUpperCase():将字符串中的字母转成全大写。如:strObj.toUpperCase()
charAt(index):返回指定下标位置的一个字符。如果没有找到,则返回空字符串。
substr(a,b):截取字符串
Array对象:数组对象,提供了数组操作方面的属性和方法。
length属性:动态获取数组长度。如:var len = arrObj.length
join():将一个数组转成字符串。返回一个字符串。语法:arrObj.join(连接号)
reverse():将数组中各元素颠倒顺序,语法:arrObj.reverse()。
pop():删除数组中最后一个元素,返回删除的那个值,并将长度减1。
shift():删除数组中第一个元素,返回删除的那个值,并将长度减1。
unshift():往数组前面添加一个或多个数组元素,长度要改变。arrObj.unshift(“a” , “b” , “c”)
push():往数组结尾添加一个或多个数组元素,长度要改变。arrObj.push(“a” , “b” , “c”)
Date对象:日期时间对象,可以偶去系统的日期时间信息。必须使用new关键字来创建,否则,无法调用Date对象的属性和方法。
Math数学对象:Math对象是一个静态对象,即在使用math对象时不需要创建实例。
Math.PI:圆周率。
Math.abs():绝对值。如:Math.abs(-9) = 9
Math.ceil():向上取整(整数加1,小数去掉)。如:Math.ceil(10.2) = 11
Math.floor():向下取整(直接去掉小数)。如:Math.floor(9.888) = 9
Math.round():四舍五入。如:Math.round(4.5) = 5;
Math.round(4.1) = 4
Math.pow(x,y):求x的y次方。如:Math.pow(2,3) = 8
Math.sqrt():求平方根。如:Math.sqrt(121) = 11
3.JavaScript作用域
js中作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和声明周期。
js中作用域分为以下两种:
1.局部作用域(函数作用域):一般只在固定的代码片段内可访问到,最常见的例如函数内部。
2.全局作用域:在代码中任何地方都能访问到的对象拥有全局作用域。
全局作用域分为以下几种情况:
1.最外层函数和在最外层函数外面定义的变量拥有全局作用域。
2.所有未定义直接赋值的变量自动声明为拥有全局作用域。