JavaScript

1.什么是JavaScript?

JavaScript(Java 脚本 ) 是一种基于对象( Object )和事件驱动( Event
Driven )并具有安全性能的脚本语言,这门语言可用于 HTML web ,更
可广泛用于服务器、 PC 、笔记本电脑、平板电脑和智能手机等设备。使用
JavaScript 可以轻松的实现与 HTML 的互操作,并且完成丰富的页面交互效
果,它是通过嵌入或调入在标准的 HTML 语言中实现的,它的出现弥补了
HTML 的缺陷,是 java HTML 折衷的选择。
基于对象
指的是程序的内部已经为用户提供好了若干个对象,用户直接使用这些对
象即可。
面向对象
java 属于面向对象的语言,面向对象是指用户自己定义类,对象需要用户自
己产生。
JavaScript 是一门弱类型语言,与 java 这样的强类型语言不同
强类型编程语言风格:认为对象行为应该受到其修饰类型严格约束。
弱类型编程语言风格:认为对象行为不应该受到其修饰类型约束。可以根
据实际需要来决定。

2.JavaScript语法

在标签<script></script>内使用,放在HTML中哪个位置都可以,或者外部引用:
<script src = "myScript.js" ></script>,src中是.js文件的路径。
数据类型:
1.原始数据类型(基本数据类型):
        ①number:数字。整数/小数/NAN(not a number 一个不是数字的数字类型)
        ②string:字符串。字符串“abc” "a" 'abcd'
        ③Boolean:true or false
        ④undefined:未定义,如果一个变量没有给初始化值,则会被默认赋值为undefined。
2.引用数据类型:对象,array,function,Data...
变量:(一小块存储数据的内存空间)
Java 语言是强类型语言,而 JavaScript 是弱类型语言。
        强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。
只能存储固定类型的数据
        弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存
放任意类型的数据。
         语法:var 变量名 = 初始化值;
typeof 运算符:获取变量的类型
                        null运算后得到的是object。
3. 三等号===,双等号==
        1.“==”表示: equality -> 等同的意思, ”==” 使用两个等号时,如果两边值的
类型不同的时候,是要先进行类型转换后,才能做比较
        2.“ ===” 表示: identity -> 恒等的意思, “===” 使用三个等号时,是不需要做
类型转换的,如果两边值的类型不同,就表示一定是不等的。
4.弹窗函数 :警告框、确认框、提示框 (也叫window弹窗函数)
警告框:经常用于确保用户可以得到某些信息: window . alert ( "sometext" );
确认框:常用于验证是否接受用户操作: window . confirm ( "sometext" );
提示框:常用于提示用户在进入页面前输入某个值: window . prompt ( "sometext" , "defaultvalue" );
弹窗换行:弹窗内容使用\n来设置换行。 alert ( "Hello\nHow are you?" );
5.JS类型转换
字符与字符串的相互转换:
将字符串转换成数字parseInt函数parseInt(string) : 函数从 string的开始解析,返回一个整数。 如果解析不到数字,则将返回一个 NaN(NaN 属性表示不能被解析的数字 ) 的值,可
以用 isNaN() 函数来检测。
将数字转换为字符串 ,得用到 String 类的 toString 方法

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++) {

}
②优化for循环:使用临时变量将长度缓存起来,避免重复获取数组长度。效率最高
for ( j = 0 , len = arr . length ; j < len ; j ++ ) {
}
③弱化版for循环:没有使用lenght判断,使用变量本身判断。
for ( j = 0 ; arr [ j ] != null ; j ++ ) {
}
④foreach循环:
arr . forEach ( function ( e ){
});
⑤for-in循环:效率最低
for ( j in arr ) {
}
数组常用方法:

 
在数组末尾插入元素: 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.函数

为完成某一功能的程序指令 ( 语句 ) 的集合,称为函数。
1.JavaScript函数的分类:
        1. 自定义函数 ( 我们自己编写的函数 ) ,如: function funName(){}
        2.系统函数 (JavaScript 自带的函数 ) ,如 alert 函数。
2.函数的调用方式:
         1. 普通调用: functionName( 实际参数 ...)
        2. 通过指向函数的变量去调用:
                var myVar=函数名;
                myVar(实际参数...);
3.函数的返回值
        1. 当函数无明确返回值时,返回的值就是 "undefined"
        2. 当函数有返回值时,返回值是什么就返回什么。
4.函数的定义方法
        1.函数声明 function 函数名(参数){  执行代码 }
        2.JavaScript桉树可以通过一个表达式定义

               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):求xy次方。如:Math.pow(2,3) = 8
        Math.sqrt():求平方根。如:Math.sqrt(121) = 11
3.JavaScript作用域
js中作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和声明周期。
js中作用域分为以下两种:
1.局部作用域(函数作用域):一般只在固定的代码片段内可访问到,最常见的例如函数内部。
2.全局作用域:在代码中任何地方都能访问到的对象拥有全局作用域。
全局作用域分为以下几种情况:

        1.最外层函数和在最外层函数外面定义的变量拥有全局作用域。
        2.所有未定义直接赋值的变量自动声明为拥有全局作用域。


 

 


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值