当前位置:   article > 正文

JavaScript(基于Java开发的学习)_javascriptjava成

javascriptjava成

JavaScript(基于Java基础学习)

JavaScript结构图

1. JS简介

JavaScript(行为):是一种弱类型脚本语言,其源码不需经过编译,而是由浏览器解释运行,用于控制网页的行为

JavaScript(简称“JS”)是当前最流行、应用最广泛的客户端脚本语言。它可以用于Web脚本,在Web领域有举足轻重的地位。
由于近年前端技术的迅猛发展,不仅是我们的网站,还有手机APP、电脑桌面应用等都可以使用JavaScript来开发。
JS文件的扩展名一般为.js
​
JavaScript最初被称为LiveScript,由Netscape(网景)公司的布兰登 艾奇在1955年开发的。在Netscape与Sun合作之后将其更名为JavaScript。
​
1. 什么是javascript?
   javascript是一门世界上最流行的脚本语言。netscape(网景公司)
   javascript 10天就出来了。
2. **一个合格的后端人员,必须要精通javascript.**
3. ECMAScript是javascript的一种规范。
4. 新版本es6,但大量浏览器还支持es5。

JavaScript特点

1. 解释型脚本语言。与C、C++、Java等需要先编译再运行同不,JS代码不需要编译,可以直接运行。
2. 面向对象。参考Java语言设计的,所有也支持面向对象开发.
3. 弱类型。JS里面对数据类型没有严格要求的,如在JS里定义一个变量:var/const/let 变量名;
4. 动态性,JavaScript是一种采用事件驱动的脚本语言,它不需要借助Web容器就可以对用户的输入做出响应。
5. 跨平台,JavaScript不依赖操作系统的,只需要一个浏览器或者Node.js环境即可。

2. JS引入方式

第一种方式:使用<script>里面是一个脚本语言</script>;
第二种方式:使用外部 .js文件,然后在页面里面引用 .js文件。

JS引入

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>JS学习</title>
  6.    <script src="js1.js"></script>
  7.    <script>
  8.        document.write("hello world!")
  9.    </script>
  10. </head>
  11. <body>
  12.    <h1>JavaScript引入方式</h1>
  13. </body>
  14. </html>
  15. //js1.js文件
  16. document.write("hello world!")

3. JS基础

3.1 标识符

1、标识符中可以含有字母,数字,下划线 _,$

2、标识符不能以数字开头。用字母,下划线 _,$开头都没问题

3、标识符不能是ES中的关键字或是保留字

4、标识符一般都采用驼峰命名法。首字母小写,每个单词的开头字母大写,其余字母小写。

3.2 关键字

abstractargumentsbooleanbreakbyte
casecatchcharclass*const
continuedebuggerdefaultdeletedo
doubleelseenum*evalexport*
extends*falsefinalfinallyfloat
forfunctiongotoifimplements
import*ininstanceofintinterface
letlongnativenewnull
packageprivateprotectedpublicreturn
shortstaticsuper*switchsynchronized
thisthrowthrowstransienttrue
trytypeofvarvoidvolatile
whilewithyield

3.3 大小写

JavaScript也是区分大小写的,如:“Hello”和“hello”就是两个不同的标识符。

3.4 注释

和Java里一样,使用// 或者 /*  */

3.5 变量&&typeof

var 标识符;    定义一个变量,老式定义方法,已弃用
let 标识符;    定义一个变量
const 标识符;  定义一个常量 
​
typeof:
JS的数据类型也分为基本数据类型和引用数据类型,我们可以使用typeof()来查看变量的数据类型。

3.6 严格模式

'use strict'

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>Title</title>
  6.    <!--
  7.    前提:IDEA需要设置支持ES6语法
  8.        'use strict';严格检查模式,预防JavaScript的随意性导致产生的一些问题
  9.        必须写在JavaScript的第一行!
  10.        局部变量建议都使用let去定义~
  11.    -->
  12.    <script>
  13.        'use strict';
  14.        //全局变量
  15.         let i=1
  16.        //ES6 let
  17.    </script>
  18. </head>
  19. <body>
  20. </body>
  21. </html>

4. JS数据类型

4.1 基本数据类型

Number类型,数值(Number)类型用来定义数值。
String类型,字符串(String)类型是一段以单引号''或双引号""包裹起来的文本,例如 '123'、"abc"。
Boolean类型,布尔(Boolean)类型只有两个值,true(真)或者 false(假)
Symbol类型

Number/String/Boolean

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>JS数据类型</title>
  6.    <script>
  7.        let data1=1;
  8.        let data2="hello";
  9.        let data3=true;
  10.        console.log("data1数据值:", data1,"data2数据值:", data2,"data3数据值:", data3)
  11.        console.log("data1数据类型:",typeof data1,"data2数据类型:",typeof data2,"data3数据类型:",typeof data3);
  12.        console.log("data1数据类型: "+typeof data1,"data2数据类型: "+typeof data2,"data3数据类型: "+typeof data3);
  13.    </script>
  14. </head>
  15. <body>
  16. </body>
  17. </html>

4.2 引用数据类型

Object类型
Array类型
  1. let person={
  2.    name:"张三",
  3.    age:18,
  4.    tel:18927845612
  5. }
  6. console.log("person对象数据类型:",typeof person);
  7. let arr=new Array(1,3,5,"hello");
  8. console.log("arr对象数据类型:",typeof arr);

5. JS运算符

    +   加法      赋值+=
    -   减法      赋值-=
    *   乘法      赋值*=
    /   除法      赋值/=
    %   取模
    ++  自增
    --  自减
关系运算符除了和Java一样之后,还增加了“===”和“!==”两个。
    ==      用于比较两个变量的值是否相等。会先检查两个变量的类型是否相同,如果类型相同,则进行“===”比较。
                如果类型不相同,则浏览器会将类型尝试转换为一至,再进行“===”比较。
    ===     用于比较两个变量的类型和值是否相等。
    !=      用于比较两个变量的值是否不相等。
    !==     用于比较两个变量的类型和值是否不相等。
  1. let d1=12;
  2. let d2="12";
  3. console.log("d1==d2结果:",d1==d2);//true
  4. console.log("d1===d2结果:",d1===d2);//false

6. JS条件控制语句

1.if判断  if(){}else if(){}else{}
2.while循环,避免程序死循环
3.do{}while();
4.for循环
5.forEach循环
6.for …in-------下标
  1. let arr1=[23,89,67,97,87];
  2. arr1.forEach(function(value){
  3. console.log(value);
  4. })
  5. // for ... in获取下标
  6. for(let ele in arr1){
  7. console.log(ele);
  8. console.log(arr1[ele]);
  9. }
  10. //if判断
  11. var age=3;
  12. if(age>3){
  13. }else if(){
  14. }else{
  15. }
  16. //while循环 避免死循环,否则只能关浏览器
  17. while(age<100){
  18. conlose.log("true")
  19. }
  20. //for
  21. for(let i=0;i<6;i++){
  22. conlose.log("true")
  23. }
  24. //do while
  25. do{
  26. }while();
  27. //foreach
  28. var arr=[1,2,3,4,5];
  29. arr.forEach(function(value){
  30. //value 值
  31. console.log(value);
  32. })
  33. //for in
  34. for(var num in arr){
  35. //num是索引
  36. console.log(age[num]);
  37. }

7. 函数function

7.1 定义函数

  1. function 函数名([参数=默认值]){
  2.   函数的方法体
  3.   return 返回值;
  4. }
  5. const 函数名 = function([参数=默认值]) {
  6.   函数的方法体
  7.           return 返回值;
  8. }
  9. 注意:一般有默认值的参数都写在后面
  10. function fun(params) {
  11.    console.log(params);
  12. }
  13. //调用函数fun();
  14. fun(123);
  15. const fun1=function(params){
  16.    console.log(params);
  17. }
  18. //调用函数fun1();
  19. fun1(234);

7.2 arguments && rest

  1. //arguments   是js免费赠送的关键字
  2. function fun(x,y){
  3.    for(let i=0;i<arguments.length;i++){
  4.        //arguments是传进来参数的数组
  5.        //使用arguments.length来确定走哪个方法,if()else if()
  6.        console.log(arguments[i]);
  7.   }
  8. }
  9. fun(2,3,5,6,8);
  10. //arguments问题,arguments包含所有参数
  11.    
  12.    
  13. //rest ES6新特性,获取指定参数以外的所有参数
  14. function fun1(x,y,...rest){
  15.    console.log(rest);
  16. }
  17. fun1(1,2,4,6,8,9);

7.3 变量作用域

1.全局作用域
    (1) 全局作用域在页面打开时被创建,页面关闭时被销毁
    (2) 编写在script标签中的变量和函数,作用域为全局,在页面的任意位置都可以访问到
    (3) 在全局作用域中有全局对象window,代表一个浏览器窗口,由浏览器创建,可以直接调用
    (4) 全局作用域中声明的变量和函数会作为window对象的属性和方法保存
2.函数作用域
    (1) 调用函数时,函数作用域被创建,函数执行完毕,函数作用域被销毁
    (2) 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
    (3) 在函数作用域中可以访问到全局作用域的变量,在函数外无法访问到函数作用域内的变量
    (4) 在函数作用域中访问变量、函数时,会先在自身作用域中寻找,若没有找到,则会到函数的上一级作用域中寻找,一直到全局作用域
    (5) 在函数作用域中也有声明提前的特性,对于变量和函数都起作用,此时函数作用域相当于一个小的全局作用域,详细声明提前请看声明提前部分
    (6) 在函数作用域中,不使用变量关键字声明的变量,在赋值时会往上一级作用域寻找已经声明的同名变量,直到全局作用域时还没找到,则会成为window的属性
    (7) 在函数中定义形参,等同于声明变量

变量作用域/let/const

  1. //变量作用域  
  2. function fun2(){
  3.    var x=0;
  4.    x=x+1;
  5. }
  6. x=x+2;//会报错,x is not defined.(可以使用闭包)
  7.    
  8. //假设内部函数与外部函数的变量重名。函数查找变量是由内向外。内部函数优先使用内部变量。
  9. funtion fun3(){
  10.    var x=1;
  11.    function fun11(){
  12.        var y=x+1;
  13.   }
  14.    var z=y+1;//报错
  15. }
  16.    
  17. //js执行引擎,自动替身变量申明。但变量赋值不会提升。
  18. function fun4(){
  19.    var x="x"+y;
  20.    console.log(x);//undefined
  21.    var y=3;
  22. }
  23. //全局变量
  24. var x=1;
  25. function fun5(){console.log(x)}
  26.    
  27. //默认所有的全局变量都绑定在window上
  28. alert(window.x);
  29.    
  30.    
  31. //方法也可以是变量。
  32. var old_alert=window.alert;
  33. old_alert(x);
  34. //规范
  35. //一个文件要多个js文件,但js文件中变量可能相同。所以变量可能冲突。我们可以使用唯一全局变量。
  36.    
  37. //现在基本所有的开发人员这样处理。  
  38. var app={};
  39. app.name="nini";
  40. app.add=function(a,b){
  41.    return a+b;
  42. }
  43. //把自己的代码全部放入自己定义的唯一空间名字中,降低全局变量名冲突。
  44.    
  45.    
  46. //局部作用域 let
  47. //建议大家都使用let
  48. function fun6(){
  49.    for(var i=0;i<9;i++){
  50.        console.log(i)
  51.   }
  52.    console.log(i)//不会报错,let就是解决作用域冲突。
  53. }
  54.    
  55.    
  56. //常量 const
  57. //以前是使用大写字母来定义,但没有规范。
  58. var PI='3.14';
  59. //ES6新特性引入关键字const,定义的变量只读。
  60. const PI='3.14';

7.4 方法

方法就是函数,只是放在对象里面

  1. //方法 就是函数放在对象
  2. var person={
  3.    name:"",
  4.    birth:2020;
  5.    run:function(){
  6.        
  7.   }
  8.    age:function(){
  9.        var now=new Date().getFullYear();
  10.        return now-this.birth;
  11.   }
  12. }
  13. //属性 person.name
  14. //方法 person.run()
  15. //this代表什么?
  16. function getAge(){
  17.    var now=new Date().getFullYear();
  18.    return now-this.birth;
  19. }
  20. var person={
  21.    name:'',
  22.    birth:'',
  23.    age:getAge //注意写法
  24. }
  25. //this指的是调用它的对象。
  26. person.age();//ok,this指的是person.
  27. getAge();//this指的是window,window中没有birth.
  28. //apply可以控制this指向。
  29. getAge.apply(person,[]);//this指向person,参数为空。

8. JS对象

JavaScript是一种面向对象的编程语言,我们可以将对象看作是一个属性的无序集合,每个属性都有一个名称和值(键/值对),采用的JSON格式。

8.1 对象创建及使用

  1. let 对象名 = {
  2.   属性1: 值,
  3.   属性2: 值,
  4.   属性n: 值,
  5.   函数: function(参数) {
  6.       函数体
  7.       this.某属性
  8.       this.某方法
  9.   }
  10. }
  11. 其中this表示当前对象
  12. 访问:
  13. 对象.属性
  14. 对象["属性"]
  15. 修改:
  16. 对象.属性 = 值;
  17. 对象["属性"] = 值;
  18. Object类:
  19. Object也是其它对象的基类,也提示了一些方法。
  20. 对象.toString();     对象转换为字符串
  21. //javascript 中所有的键都是字符串,只是任意对象
  22. //对象定义 属性之间逗号隔开,最后一个不需要
  23. var person={
  24.    name="",
  25.    age="",
  26.    score=""
  27. }
  28. //使用 对象.属性
  29. console.log(person.name)
  30. //使用一个不存在的属性,不会报错,指会undefined
  31. person.haha
  32. //删除属性
  33. delete person.age
  34. //添加属性
  35. person.haha="haha"
  36. //判断属性值是否在这个对象中 in
  37. 'age' in person
  38. 'toString' in person //返回true,因为父类中有toString方法
  39. //判断一个属性是否是自身拥有的 hasOwnProperty("属性名")
  40. person.hasOwnProperty("age")
  41. //这个东西写错了,都看不出来!

8.2 工厂函数

1.它是一个函数。

2.它用来创建对象。

3.它像工厂一样,“生产”出来的函数都是“标准件”(拥有同样的属性)

  1. // 工厂函数
  2. const createStudent=function(name,age){
  3.    let student={
  4.        // 如同与对象类的属性名一致,就简写
  5.        name,
  6.        age,
  7.        run:function(){
  8.            console.log("The student who is running is ",this.name);
  9.       }
  10.   }
  11.    return student;
  12. }
  13. let stu1=createStudent("张三",18);
  14. stu1.run();

9. 数组

  1. let 数组名 = [值,值,值];
  2. 如:let 数组名 = [1,2,3];
  3.   let 数组名 = ["jack","rose"];
  4.   let 数组名 = [{
  5.               属性1: 值,
  6.               属性2: 值,
  7.               属性n: 值,
  8.               },{
  9.               属性1: 值,
  10.               属性2: 值,
  11.               属性n: 值,
  12.               },{
  13.                 属性1: 值,
  14.                 属性2: 值,
  15.                 属性n: 值,
  16.               }];
  17. for (let i = 0; i < 数组.length; i++){
  18.   数组[i] //就是取值
  19. }
  20. for (let 变量 of 数组) {
  21.   变量     //就是取值
  22. }

数组属性/方法

  1. var arr=[1,2,3,4,5];
  2. //数组arr.length是可变的
  3. arr.length=10;
  4. //length变长,会有undefined出现。变短,会丢失数值
  5. //通过元素获得下标索引
  6. arr.indexOf(2);
  7. //slice() 截取Array的一部分,返回一个新的数组。
  8. arr.slice(1,4)  //[1,4)
  9. //push pop 尾部
  10. arr.push("a","b")//压入到尾部
  11. arr.pop()//从尾部弹出一个元素
  12. //unshift,shift 头部
  13. arr.unshift("q","i")//压入到头部
  14. arr.shift()//从头部弹出一个元素
  15. //排序 sort()一般从小到大
  16. //sort(比较函数);     如:数组.sort((o1, o2) => o1.某个属性 < o2.某个属性 ? 1 : -1);
  17. arr.sort()
  18. //元素反转 reverse()
  19. arr.reverse()
  20. //concat() 数组拼接。并没有修改数组,只会返回新数组
  21. arr.concat([1,23,4])
  22. //打印拼接数组,使用特定的字符串连接 join
  23. arr.join('-')
  24. 多维数组
  25. var arr1=[[1,2],[3,4]]

10. Number对象

Number对象也叫数字对象

10.1 e指数表示法

e+  就是往右增加位数        例:5e3 = 5000,  6.789e10  = 67890000000
e-  就是往左减少位数

10.2 Number属性与方法

属性:
NaN         表示非数字
MAX_VALUE   表示JS能存储的最大数字
MIN_VALUE   表示JS能存储的最小数字
​
方法:
parseInt(参数)    可以将参数转换为number整数,也有对应的全局方法。
parseFloat(参数)  可以将参数转换为number浮点数,也有对应的全局方法。
isInteger(参数)   判断参数是否为整数
isNaN(参数)       判断参数是否为NaN,换句话说,判断参数是否是非数字。经验:在判断字符串是否为数字时,一般会先将空字符串和null排除掉。
注意:还有一个全局的isNaN(参数),该全局isNaN会自动转换参数类型,而Number.IsNaN不会自动转换类型。

全局isNaN与Number.IsNaN区别网址:js中isNaN和Number.isNaN的区别 - 兔子先生i - 博客园 (cnblogs.com)

简单理解:Number.isNaN就是与NaN===参数;isNaN本意是通过Number()方法尝试将这参数转换成Number类型,如果成功返回false,如果失败返回true。

Number属性&&方法

  1. console.log("判断NaN===Number.NaN:",Number.isNaN(Number.NaN));
  2. console.log("Number最大值:",Number.MAX_VALUE);
  3. console.log("Number最小值:",Number.MIN_VALUE);
  4. let str="123";
  5. let num1=parseInt(str);
  6. console.log("parseInt转化:",num1);
  7. let str1="12.34";
  8. let num2=parseFloat(str1);
  9. console.log("parseFloat转化:",num2);
  10. console.log("inInteger判断是否为整数:",Number.isInteger(num1))
  11. console.log("isNaN判断是否为NaN:",Number.isNaN(num1))

11. Math对象

属性:
Math.E  自然对数(e)
Math.PI 圆周率(π)
​
求绝对值:
Math.abs(数字);
参数说明:数字可以是任意数学
​
求最大值/最小值
Math.max(数字1,数字2);  求两个数的最大值
Math.min(数字1,数字2);  求两个数的最小值
​
求整运算:
Math.ceil(数字);      向上取整,即返回大于或等于参数的最小整数;
Math.floor(数字);     向下取整,即返回小于或等于参数的最大整数;
Math.round(数字);     四舍五入,根据小数点后的第一们小数来进行
​
指数运算:
Math.pow(double a, double b);   返回以a为底数,b为指数的幂值
Math.exp(double a);             返回以e为底数,a为指数的幂值
Math.sqrt(double a);            返回a的平方根
Math.cbrt(double a);            返回a的立方根
​
三角函数运算:
Math.sin(double a);             返回角的正弦值,参数为弧度单位
Math.cos(double a);             返回角的余弦值,参数为弧度单位
Math.tan(double a);             返回角的正切值,参数为弧度单位
Math.asin(double a);            返回角的反正弦值,参数为弧度单位
Math.acos(double a);            返回角的反余弦值,参数为弧度单位
Math.atan(double a);            返回角的反正切值,参数为弧度单位
弧度与角度换算公式: 弧度 = 角度 * (Math.PI / 180);

Math对象

  1. // Math对象常见属性
  2. console.log("Math.PI:",Math.PI);
  3. console.log("Math.E:",Math.E);
  4. // 求绝对值
  5. console.log("Math.abs(-32):",Math.abs(-32));
  6. // 最大值 最小值
  7. console.log("Math.max(4,2):",Math.max(4,2));
  8. console.log("Math.min(4,2):",Math.min(4,2));
  9. // 取整 向上/向下/四舍五入
  10. console.log("Math.ceil(12.4):",Math.ceil(12.4));
  11. console.log("Math.floor(12.4):",Math.floor(12.4));
  12. console.log("Math.round(12.4):",Math.round(12.4));
  13. // 指数运算
  14. console.log("Math.pow(2,4):",Math.pow(2,4));
  15. // 三角函数
  16. console.log("Math.sin(45):",Math.sin(45));

12. Date对象

JS提供了2种不同的方式来创建Date对象,如:
1. let time = new Date();       创建当前时间对象
2. let time = new Date(毫秒数);   根据毫秒数创建时间对象
其它还有2种不推荐再使用
​
date.getTime();             获取对应的时间戳
date.getFullYear();         获取日期里的年份,如2022
date.getMonth();            获取日期里的月份,注意:从0开始,如0表示一月,1表示二月
date.getDate();             获取日期里的日
date.getHours();            获取日期里的时
date.getMinutes();          获取日期里的分
date.getSeconds();          获取日期里的秒
date.getDay();              获取日期里的周,注意:从0开始,如0表示周日,1表示周一,2表示周二
  1. //内部对象
  2. //标准对象 [typeof 123, typeof '123',typeof []]
  3. //Date
  4. var now=new Date();
  5. now.getFullYear();//年
  6. now.getMonth();//月 0-11
  7. now.getDate();
  8. now.getHours();
  9. now.getDay();//星期几
  10. now.getMinutes();
  11. now.getSeconds();
  12. now.getTime();//时间戳 1970.1.1 0.00.00开始
  13. now Date(时间戳);//时间戳转时间。
  14. now.toLocaleString();
  15. now.toGMTstring();

json

  1. //json是什么?是一种轻量级的数据交互格式。早期,数据传输使用xml。json可以提高数据传输速率。
  2. //格式:对象{},数组[],键值对key:value
  3. var user={
  4.    name:"张三",
  5.    age:3,
  6.    sex:"男"
  7. }
  8. //对象转化json字符串
  9. var json=JSON.stringify(user);
  10. //json字符串转化为对象
  11. var obj=JSON.parse("json字符串");
  12. //Ajax
  13. //原生的js写法,xhr异步请求
  14. //jQuery封装好的方法
  15. //axios请求

13. String字符串

属性:
字符串.length
​
字符串拼接:
1. 使用”+“
2. 使用 concat()方法
    示例:字符串1.concat(字符串2);
    
字符串大小写转换:
大转小:字符串.toLowerCase();
小转大:字符串.toUpperCase();
注意:这俩方法只对字母有效,对汉字、符号无效果的。
​
字符串去掉首位空格:
字符串.tirm();
​
字符串截取:
字符串.substring(int beginIndex, int endIndex);
参数说明:
    beginIndex表示截取的开始索引位置(截取结果会包含该下标所对应的字符)
    endIndex表示截取的结束索引位置【可省略的】(截取结果不会包含该下标对应的字符)
    索引位置通常也称为“下标”
    
字符串查找:
1. 字符串.indexOf(String 查找源, int fromIndex);
        从字符串自左向向进行查询,返回的数据是参数“查询源”首次出现的下标位置,如果未查到,则返回-1;
        fromIndex参数表示从哪个下标开始查找【可省略】,省略后相当于0
2. 字符串.lastIndexOf(String 查找源, int fromIndex);
        从字符串自左向向进行查询,返回的数据是参数“查询源”最后一次出现的下标位置,如果未查到,则返回-1;
        fromIndex参数表示从哪个下标开始查找【可省略】,省略后相当于字符串长度
3. 字符串.charAt(int 下标);
        通过下标位置返回对应的字符
        
字符串替代:
字符串.replace(String oldStr, String newStr);
    参数说明:
        oldStr表示需要被替换的源字符/串
            当该参数只是一个普通字符/串时,只会替换掉第一个匹配的字符/串。
            当该参数是一个正则表达式时,才会替换掉所有匹配的字符/串。
        newStr表示被替换之后的字符/串
        
字符串.startsWith(String str);
    返回字符串是以 str 开头吗?返回的是boolean值
字符串.endsWidth(String str);
    返回字符串是以 str 结尾吗?返回的也是boolean值
  
字符串拆分:  
字符串.split('分隔符');
返回一个String[]数组    
  1. 'use strict';
  2. //转义字符 \
  3. //字符串 实用单引号或者双引号
  4. // \' \n \t... \unicode字符
  5. //可以使用 ``来多行写
  6. var name=`ni
  7. ji
  8. ji`;
  9. //字符串长度
  10. name.length
  11. //字符串不可变
  12. //转化成大写 方法
  13. name.toUpperCase()
  14. //转化成小写,方法
  15. name.toLowerCase()
  16. //获取指定下标
  17. name.indexOf('n')
  18. //substring截取
  19. name.substring(1)//从第一个字符串截取到最后一个
  20. name.substring(1,3)//[1,3)

14. Map Set(ES6)

  1. //ES6 才有,只有new出来,不报错才可以
  2. new Map();
  3. new Set();
  4. //map由于字典
  5. var map=new Map([['ni':90],['ki':99]]);
  6. map.get('ni'); //通过key获取value
  7. map.set("admin",99);//设置值
  8. map.delete("admin")//删除
  9. //set 无需不重复集合
  10. var set=new Set([1,2,3,4,4,4]);
  11. console.log(set);//去掉重复的值
  12. set.add(5);//添加
  13. set.delete(5);//删除
  14. set.has(3);//是否包含元素

15. iterator遍历

  1. //for of 遍历值 ES6新特性
  2. var arr=[1,2,4,5,8];
  3. for(var x of arr){
  4.    console.log(x);
  5. }
  6. //遍历 map
  7. var map=new Map([['ni':90],['ui':89]]);
  8. for(let x of map){
  9.    console.log(x);
  10. }
  11. //遍历 set
  12. var set=new Set([1,6,9,8]);
  13. for(let x of set){
  14.    console.log(x)
  15. }
  16. //bug
  17. var arr1=[3,4,6];
  18. arr.name='mi';
  19. for(let x in arr1){
  20.    console.log(x);
  21. }

16. 面向对象编程(ES6)

类:模板 对象:具体实例

  1. //什么是面向对象? 类:模板 对象:具体实例
  2. //原型:
  3. var student={
  4.    class:"高一",
  5.    identify:"新生"
  6. };
  7. var xiaoming={
  8.    name:"xianming"
  9. };
  10. xiaoming.__proto__=student;//继承
  11. console.log(xiaoming);
  12. //class继承 ES6之前
  13. function student(name){
  14.    this.name=name;
  15. }
  16. student.prototype.hello=function(){}
  17. //ES6之后
  18. class Student{
  19.    //构造器
  20.    constructor(name){
  21.        this.name=name;
  22.   }
  23.    hello(){alert("hello")}
  24. }
  25. var xiaoming=new Student("xiaoming");
  26. //逐渐规范......
  27. //继承
  28. class xiaoStudent extends Student{
  29.    constructor(name,age){
  30.        super(name);//父类的
  31.        this.age=age;
  32.   }
  33.    myAge(){
  34.        alert("我永远十一岁!");
  35.   }
  36. }
  37. //原型链 无止尽的__proto__

17. 事件(重点)

JS 事件(event)是当用户与网页进行交互时发生的事情,例如单击某个链接或按钮、在文本框中输入文本、按下键盘上的某个按键、移动鼠标等等。 当事件发生时,您可以使用 JavaScript 中的事件处理程序(也可称为事件监听器)来监测并执行某些特定的程序。 一般情况下事件的名称都是以单词on开头的,例如点击事件 onclick、页面加载事件 onload 等。 事件就是一个函数,只是有点特殊

17.1 鼠标事件

1.<div id="total2" οnclick="alert('hello')"></div>
2.<button οnclick="click(event)"></button>
3.<div id="d1"></div>   let d1=document.getElementById("d1");   d1.οnclick=function(){}
4.添加监听事件    div1.addEventListener('click',function(event){});
​
事件动态绑定:
就是通过程序来动态给元素绑定事件,方法就是给元素设置一个事件就可以了。如:
元素.onclick = function(event) {
    事件里面的方法
}

鼠标事件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>鼠标事件</title>
  6.    <style>
  7.        #total,#d5,#total2{
  8.            width: 100%;
  9.            height: 100px;
  10.            background: aqua;
  11.            opacity: 0.5;
  12.       }
  13.        #d1,#d3{
  14.            width: 100%;
  15.            height: 200px;
  16.            background: red;
  17.            opacity: 0.5;
  18.       }
  19.        #d2,#d4{
  20.            margin: 0 auto;
  21.            width: 50%;
  22.            height: 100px;
  23.            background: rgb(234, 255, 0);
  24.            opacity: 0.5;
  25.       }
  26.    </style>
  27. </head>
  28. <body>
  29.    <!-- onclick单击事件 -->
  30.    <div id="total2" onclick="alert('hello')">
  31.    </div>
  32.    
  33.    <div id="total">
  34.    </div>
  35.    <button onclick="click(event)">按钮</button>
  36.    <button oncontextmenu="rightBu(event)">右按钮</button>
  37.    <button onmousedown="mouseDown(event)"
  38.            onmouseup="mouseUp(event)"
  39.    >鼠标按下事件</button>
  40.    <br>
  41.    <div id="d1">
  42.        <div id="d2"></div>
  43.    </div>
  44.    <br>
  45.    <div id="d3">
  46.        <div id="d4"></div>
  47.    </div>
  48.    <br>
  49.    <div id="d5"></div>
  50. </body>
  51. <script>
  52.    // 事件阻止
  53.    // 给button直接添加点击事件
  54.    const click=function(event){
  55.        console.log(event);
  56.   }
  57.    // 给div添加个监听点击事件,addEventListener()
  58.    let div1=document.getElementById("total");
  59.    div1.addEventListener('click',function(event){
  60.        console.log(event);
  61.        console.log("hello world!");
  62.   });
  63.    // 给div添加双击事件
  64.    div1.ondblclick=function(event){
  65.        console.log(event);
  66.        console.log("双击事件!");
  67.   }
  68.    // 右鼠标按键
  69.    const rightBu=function(event){
  70.        console.log("右按钮!");
  71.        console.log(event);
  72.   }
  73.    // 按下鼠标是触发事件
  74.    const mouseDown=function(event){
  75.        console.log("鼠标按下!");
  76.        console.log(event);
  77.   }
  78.    // 按钮松开事件
  79.    const mouseUp=function(event){
  80.        console.log("鼠标弹起!");
  81.        console.log(event);
  82.   }
  83.    // 鼠标移动
  84.    let d1=document.getElementById("d1");
  85.    d1.onmouseover=function(event){
  86.        console.log("onmouseover鼠标移动!");
  87.        console.log(event);
  88.   }
  89.    // 鼠标离开
  90.    let d2=document.getElementById("d2");
  91.    d2.onmouseout=function(event){
  92.        console.log("onmouseout鼠标离开!");
  93.        console.log(event);
  94.   }
  95.    // 鼠标移动
  96.    let d3=document.getElementById("d3");
  97.    d3.onmouseenter=function(event){
  98.        console.log("onmouseenter鼠标移动!");
  99.        console.log(event);
  100.   }
  101.    // 鼠标离开
  102.    let d4=document.getElementById("d4");
  103.    d4.onmouseleave=function(event){
  104.        console.log("onmouseleave鼠标离开!");
  105.        console.log(event);
  106.   }
  107.    let d5=document.getElementById("d5");
  108.    d5.onmousemove=function(event){
  109.        console.log("onmouseemove鼠标移动!");
  110.        console.log(event);
  111.   }
  112. </script>
  113. </html>

17.2 键盘事件

onkeypress      当按下键盘上的某个键并输入了文字时触发的事件
onkeydown       当按下键盘上的某按键时触发的事件(并未松开按键)
onkeyup         当放开键盘上的某个按键时触发的事件
    顺序:onkeydown -> onkeypress -> onkeyup
    区别:1. onkeydown按下键盘上所有键都会触发事件,而onkeypress只限于大部分具有具体字符的按键。
         2. onkeydown和onkeypress这两个事件通过target取到的value值是输入事件作用前的值,
            而onkeyup这个事件通过target取到的value值是输入事件作用后的值。
         3. onkeypress无法针对中文输入进行触发。

div等非输入性质的元素(与其对应的可输入性元素有input, textarea), 是不可被聚焦的。解决网址:div绑定键盘事件写个程序换个饼的博客-CSDN博客div绑定键盘事件 div标签如果像input等变成可输入框,可以加个属性contenteditable="true"(是否允许编辑元素内的内容),这样也可以实现键盘事件。

键盘事件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.    <title>键盘事件</title>
  8.    <style>
  9.        .div1{
  10.            width: 100%;
  11.            height: 600px;
  12.            background: rgb(93, 226, 226);
  13.            opacity: 0.5;
  14.       }
  15.    </style>
  16. </head>
  17. <body>
  18.    <!-- <div class="div1" tabindex="-1"></div> -->
  19.    <div class="div1" contenteditable="true"
  20.    onkeypress="onkeyP(event)"
  21.    onkeydown="onkeyD(event)"
  22.    onkeyup="onkeyU(event)"></div>
  23.    <script>
  24.        // 当按下键盘上的某个键并输入了文字时触发的事件
  25.        const onkeyP=function(event){
  26.            console.log("==============onkeypress事件==============");
  27.            console.log("press整个事件event",event);
  28.            console.log("event.key按键:",event.key);
  29.            console.log("event.keyCode键盘编码:",event.keyCode);
  30.            // 因为我们使用的是div标签,因此获取键盘输入是textContent。而不是target.value
  31.            // 这里获取值慢了一拍。
  32.            console.log("获取整个输入值:",event.target.textContent);
  33.       }
  34.        // 当按下键盘上的某按键时触发的事件(并未松开按键)
  35.        const onkeyD=function(event){
  36.            console.log("==============onkeydown事件==============");
  37.            console.log("down整个事件event",event);
  38.       }
  39.        // 当放开键盘上的某个按键时触发的事件
  40.        const onkeyU=function(event){
  41.            console.log("==============onkeyup事件==============");
  42.            console.log("up整个事件event",event);
  43.       }
  44.    </script>
  45. </body>
  46. </html>

17.3 表单事件

onfocus         当某个元素获得焦点时触发的事件
onblur          当某个元素失去焦点时触发的事件
onchange        当某个元素失去焦点并且元素的内容发生了改变时触发的事件
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>表单事件</title>
  6. </head>
  7. <body>
  8.    <input type="text" placeholder="这真的好吗!"
  9.        onfocus="focusEvent(event)"
  10.        onblur="blurEvent(event)"
  11.        onchange="changeEvent(event)"
  12.        >
  13.    <script>
  14.        // 当某个元素获得焦点时触发的事件
  15.        const focusEvent=function(event){
  16.            console.log("onfocus事件:",event);
  17.       }
  18.        // 当某个元素失去焦点时触发的事件
  19.        const blurEvent=function(event){
  20.            console.log("onblur事件:",event);
  21.       }
  22.        // 当某个元素失去焦点并且元素的内容发生了改变时触发的事件
  23.        const changeEvent=function(event){
  24.            console.log("changeEvent事件:",event);
  25.       }
  26.    </script>
  27. </body>
  28. </html>

17.4 其他事件

oncopy          当内容被复制时触发的事件
oncut           当内容被剪切时触发的事件
onpaste         当内容被粘贴时触发的事件
onchange        select标签与option中的一个事件
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>其他事件</title>
  6. </head>
  7. <body>
  8.    <p oncopy="copy(event)" oncut="cut(event)">
  9.       1900年10月5日,冰心出生于福建福州三坊七巷谢家大宅(今鼓楼区杨桥东路17号),
  10.       该宅院也是林觉民故居,是冰心祖父谢銮恩从林觉民家属购得。
  11.       祖籍地是福州长乐横岭乡,今福州市长乐区横岭村。
  12.       冰心的曾祖父谢以达这一辈进城谋生 。1901年5月,全家迁至上海。
  13.    </p>
  14.    <input type="text" onpaste="paste(event)" placeholder="禁止粘贴">
  15.    <script>
  16.        // 赋值
  17.        const copy=function(event){
  18.            console.log("oncopy事件:",event);
  19.            alert("你要充值了vap,才能复制!");
  20.            event.preventDefault();
  21.       }
  22.        // 裁剪
  23.        const cut=function(event){
  24.            console.log("oncut事件:",event);
  25.            alert("你要充值了vap,才能裁剪!");
  26.            event.preventDefault();
  27.       }
  28.        // 粘贴
  29.        const paste=function(event){
  30.            console.log("onpaste事件:",event);
  31.            alert("你不能直接粘贴!");
  32.            event.preventDefault();
  33.       }
  34.    </script>
  35. </body>
  36. </html>

17.5 DOM文档事件

DOM事件:
onload          当DOM文档加载完毕后触发的事件
​
DOM对象:
event:
用于描述所产生的事件,调用事件处理程序时,JS会把事件对象(event)作为参数传递给事件处理程序,事件对象提供也有关事件本身的详细信息。
因而可以在事件处理程序中通过事件对象获取有关事件的相关信息。
比如:获取事件源的名称、键盘按键的状态、鼠标光标的位置、鼠标按钮的状态
​
属性:
type            获取事件类型的名称,如:click
target          获取触发事件的目标元素,如:button、input、div
clientX         用于获取鼠标事件发生时相对于可视容器左上角的x坐标
clientY         用于获取鼠标事件发生时相对于可视容器左上角的y坐标
layerX          clientX+水平滚动量
layerY          clientY+垂直滚动量
key             返回被按下的键盘按键对应的键值
charCode        返回onkeypress事件对应的ASICC编码值【弃用】
keyCode         返回onkeydown和onkeyup事件对应的ASICC编码值,不区分大小写的【弃用】
ctrlKey         判断键盘事件发生时是否同时按住了Ctrl组合键
altKey          判断键盘事件发生时是否同时按住了Alt组合键
shiftKey        判断键盘事件发生时是否同时按住了Shift组合键
​
方法:
preventDefault()    用于阻止默认事件的执行
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>DOM对象</title>
  6.    <style>
  7.        .div1{
  8.            width:100%;
  9.            height:60px;
  10.            border:red 1px solid;
  11.       }
  12.    </style>
  13. </head>
  14. <body>
  15.    <p class="p1">hello world !</p>
  16.    <div class="div1" contenteditable="true" onkeypress="press(event)">你好!世界...</div>
  17.    <script>
  18.        // document对象
  19.        console.log(document);
  20.        //绑定一个点击事件,查看p1中的event参数
  21.        let p1=document.querySelector(".p1");
  22.        p1.oncopy=function copy(event) {
  23.            console.log(event);
  24.            console.log(event.target.clientWidth);
  25.       }
  26.        //onload事件
  27.        onload=function load(event) {
  28.            console.log(event);
  29.       }
  30.        //event包含clientX,clientY等等属性
  31.        let div1=document.querySelector(".div1");
  32.        div1.onclick=function(event) {
  33.            console.log(event);
  34.       }
  35.        //里面含有keyCode
  36.        const press=function(event) {
  37.            console.log("键盘点击事件:",event);
  38.       }
  39.        
  40.    </script>
  41. </body>
  42. </html>

18. DOM文档对象模型

文档对象模型(Document Object Model,简称 DOM),是一种与平台和语言无关的模型,用来表示 HTML 或 XML 文档。文档对象模型中定义了文档的逻辑结构,以及程序访问和操作文档的方式。document一样是window的一个对象

DOM树

 

18.1 Document对象

Document对象属性与方法

Document对象属性:
title           返回当前文档的标题
domain          返回当前文档的域名
URL             返回文档的完整URL地址
documentElement 返回文档的根(html)节点
body            返回文档的body节点
inputEncoding   返回文档的编码方式
readyState      返回文档的状态
                    loading  加载中,HTML结构还未完全加载完毕
                    complete  加载完成,HTML结构已经加载完毕
​
Document对象方法:
write(参数)                   向页面写入文字内容,会覆盖掉原本的Docuement里面的内容。
getElementById(ID)           返回文档中具有指定ID属性的元素
getElementsByName(name)      返回具有指定name属性的元素集合
getElementsByTagName(tag)    返回具有指定标签名的元素集合
getElementsByClassName(class)返回具有指定样式类名的元素集合
querySelector(参数)           返回文档中具有指定ID或者CSS选择器的第一个元素,
                                这里的参数可以是“#ID”也可以是“.class”
querySelectorAll(参数)        返回文档中具有指定CSS选择器的所有元素   
document.createElement()    创建一个元素节点

Document对象

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>DOM对象</title>
  6.    <style>
  7.        .div1{
  8.            width:100%;
  9.            height:60px;
  10.            border:red 1px solid;
  11.       }
  12.    </style>
  13. </head>
  14. <body>
  15.    <div class="div1"></div>
  16.    <script>
  17.        console.log("document对象:",document);
  18.        console.log("document标题:",document.title);
  19.        console.log("当前文件域名:",document.domain);
  20.        console.log("当前文档的URL:",document.URL);
  21.        //tagName标签名
  22.        console.log("根标签:",document.documentElement.tagName);
  23.        console.log("body标签:",document.body.tagName);
  24.        console.log("编码方式:",document.inputEncoding);
  25.        console.log("文档状态:",document.readyState);
  26.        onload=function(params) {
  27.            console.log("hello world !");
  28.       }
  29.        document.write("hello world !");
  30.        //创建一个元素节点
  31.        let a=document.createElement("a");
  32.        a.textContent="baidu";
  33.        a.href="#";
  34.        let div1=document.querySelector(".div1");
  35.        //追加元素
  36.        div1.appendChild(a);
  37.        //根据标签名获取
  38.        let a1=document.querySelector("a");
  39.        console.log(a1);
  40.        // getElementsByClassName(class)
  41.        let div2=document.getElementsByClassName("div1");
  42.        console.log(div2[0]);
  43.    </script>
  44. </body>
  45. </html>

18.2 Element对象属性与方法

Element对象属性与方法

元素属性:
tagName         返回元素的标签名称(大写)
className       返回或设置元素的类样式
classList       设置元素的类样式集合
style           返回或设置元素的行样式
clientWidth     返回元素可视区域的宽度
clientHeight    返回元素可视区域的高度
offsetLeft      返回元素在水平方向的偏移量,或者叫x坐标
offsetTop       返回元素在垂直方向的偏移量,或者叫y坐标
offsetWidth     返回元素的实际宽度,包括可视宽度+滚动条宽度
offsetHeight    返回元素的实际高度,包括可视高度+滚动条宽度
scrollLeft      返回或设置元素横向滚动条距离元素左侧边距的距离,或者叫横向滚动量
scrollTop       返回或设置元素纵向滚动条距离元素上方边距的距离,或者叫纵向滚动量
scrollWidth     返回元素的完整宽度(包括横向滚动条隐藏的部分)
scrollHeight    返回元素的完整高度(包括纵向滚动条隐藏的部分)
关系:scrollWidth = offsetWidth + 最大scrollLeft
     scrollHeight = offsetHeight + 最大scrollTop
     相差19像素的疑问?是因为滚动条会遮挡一19像素宽度的区域,如果要看到完整的内容,则需要多滚动19像素。
textContent     设置或者返回元素的文本内容(设置时会将HTML标签当作字符输出,获取时会过滤HTML标签)
innerHTML       设置或者返回元素的HTML内容(设置时会将HTML标签当DOM结构中的一部分进行渲染,获取时会保留HTML标签)
parentElement   返回元素的父级元素
children        返回元素中子元素的集合,下标也是从0开始的
firstElementChild   返回第一个子元素
lastElementChild    返回最后一个子元素
previousElementSibling  返回元素上一个兄弟元素
nextElementSibling      返回元素下一个兄弟元素
​
元素方法:
focus()         让元素聚焦,一般用于输入控件

Element对象

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>DOM对象</title>
  6.    <style>
  7.        body{
  8.        /* 这里设置主要是看看html与body */
  9. /*             padding:0;
  10.           margin:0; */
  11.       }
  12.        .div1{
  13.            width:100%;
  14.            height:60px;
  15.            border:red 1px solid;
  16.       }
  17.    </style>
  18. </head>
  19. <body>
  20.    <div class="div1" style="color:red;"><p class="p1">你好呀!</p></div>
  21.    <input type="text" class="text">
  22.    <script>
  23.       onload=function(params) {
  24.            // input标签
  25.            let text=document.querySelector(".text");
  26.           // 一开始就聚焦
  27.            text.focus();
  28.       }
  29.        
  30.       let element=document.querySelector(".div1");
  31.        
  32.        //标签名
  33.        console.log(element.tagName);
  34.        // 标签类名
  35.        console.log(element.className);
  36.        // 标签样式集合
  37.        console.log(element.classList);
  38.        // style样式,这样只能获取行类的,如外部样式获取不到
  39.        console.log(element.style);
  40.        console.log(element.style.color);
  41.        // clientWidth
  42.        console.log("clientWidth:",element.clientWidth);
  43.        // cientHeight
  44.        console.log("clientHeight:",element.clientHeight);
  45.        // offsetLeft
  46.        console.log("offsetLeft:",element.offsetLeft);
  47.        // offsetTop
  48.        console.log("offsetTop:",element.offsetTop);
  49.        //body
  50.        console.log(document.body.offsetWidth);
  51.        //html
  52.        console.log(document.documentElement.offsetWidth);
  53.        console.log(document.body.offsetLeft);
  54.        let div1=document.querySelector(".div1");
  55.        // textContent
  56.        console.log("textContent",div1.textContent);
  57.        // innerHMTL
  58.        console.log("innerHTML",div1.innerHTML);
  59.        // children
  60.        console.log("children",div1.children);
  61.        // p标签
  62.        let p1=document.querySelector(".p1");
  63.        console.log("parenElement",p1.parentElement);
  64.    </script>
  65. </body>
  66. </html>

19. BOM浏览器对象

浏览器对象模型(Browser Object Model,简称 BOM)是 JavaScript 的组成部分之一,BOM 赋予了 JavaScript 程序与浏览器交互的能力。

19.1 window属性

name:返回窗口的名称
innerHeight:返回浏览器窗口的高度,不包含工具栏与滚动条
innerWidth:返回浏览器窗口的宽度,不包含工具栏与滚动条
  1. console.log(window);
  2. window.name="学习BOM对象";
  3. console.log(window.name);
  4. console.log(window.innerHeight);
  5. console.log(window.innerWidth);

19.2 navigator对象

navigator 存储了与浏览器相关的信息,例如名称、版本等
属性:
    appName         返回浏览器的官方名称
    appCodeName     返回当前浏览器的内部名称(开发代号)
    appVersion      返回浏览器的平台和版本信息
    onLine          返回浏览器是否联网,联网则返回 true,断网则返回 false
    platform        返回浏览器运行的操作系统平台
    userAgent       返回浏览器的厂商和版本信息,即浏览器运行的操作系统、浏览器的版本、名称
  1. console.log(window.navigator);
  2. console.log(window.navigator.appName);
  3. console.log(window.navigator.appCodeName);
  4. console.log(window.navigator.appVersion);
  5. console.log(window.navigator.onLine);
  6. console.log(window.navigator.platform);
  7. console.log(window.navigator.userAgent);

19.3 screen对象

screen 对象中包含了有关计算机屏幕的信息,例如分辨率、宽度、高度等
属性:
    width           返回屏幕的完整宽度
    height          返回屏幕的完整高度
    availWidth      返回屏幕的宽度(不包括 Windows 任务栏)
    availHeight     返回屏幕的高度(不包括 Windows 任务栏)
    colorDepth      返回屏幕的颜色深度(color depth),根据 CSSOM(CSS 对象模型)视图,为兼容起见,该值总为 24。
    pixelDepth      返回屏幕的位深度/色彩深度(bit depth),根据 CSSOM(CSS 对象模型)视图,为兼容起见,该值总为 24。
    orientation     返回当前屏幕的方向
  1. console.log(window.screen);
  2. console.log(window.screen.width);
  3. console.log(window.screen.height);
  4. console.log(window.screen.availWidth);
  5. console.log(window.screen.availHeight);
  6. console.log(window.screen.colorDepth);
  7. console.log(window.screen.pixelDepth);
  8. console.log(window.screen.orientation);

19.4 location对象

location 对象中包含了有关当前页面链接(URL)的信息,例如当前页面的完整 URL、端口号等
属性:
    host            返回一个 URL 的主机名和端口号
    hostname        返回一个 URL 的主机名
    port            返回一个 URL 中的端口号,http协议的网站默认端口是80,https协议的网站默认端口是443
    protocol        返回一个 URL 协议
    href            返回或设计一个完整的 URL
    search          返回一个 URL 中的查询部分,即 URL 中?及其之后的一系列查询参数。
方法:
    assign(URL)     跳转到指定 URL 新地址,会保存原网页的历史记录。
    replace(URL)    跳转到指定 URL 新地址,不会保存原网页的历史记录,即不能使用后退来返回该页面。
    reload()        重新加载当前 URL。相当于按下浏览器的刷新按钮或者F5
  1. console.log(window.location);
  2. console.log(window.location.host);
  3. console.log(window.location.port);
  4. console.log(window.location.protocol);
  5. console.log(window.location.href);
  6. console.log(window.location.search); //即 URL 中?及其之后的一系列查询参数。http://127.0.0.1:5500/%E4%BA%8B%E4%BB%B6/event/bom.html?pp window.location.search会获取?pp
  7. // console.log(window.location.assign("kkkk"));
  8. // console.log(window.location.replace("kkkk"));
  9. // console.log(window.locatireload());

19.5 history对象

history 对象中包含了用户在浏览器中访问过的历史记录,其中包括通过浏览器浏览过的页面
属性:
    length          返回浏览历史的数目,包含当前已经加载的页面。
    state           返回浏览器在当前 URL 下的状态信息,如果没有调用过 pushState() 或 replaceState() 方法,则返回默认值 null。
方法:
    back()          参照当前页面,返回历史记录中的上一条记录(即返回上一页),相当于点击浏览器工具栏中的←按钮来实现同样的效果。
    forward()       参照当前页面,前往历史记录中的下一条记录(即前进到下一页),相当于点击浏览器工具栏中的→按钮来实现同样的效果。
    go(数字)         参照当前页面,根据给定参数,打开指定的历史记录,例如 -1 表示返回上一页,1 表示返回下一页。
    pushState()     【H5新增】向浏览器的历史记录中插入一条新的历史记录。
    replaceState()  【H5新增】使用指定的数据、名称和 URL 来替换当前历史记录。

19.6 cookie对象(弃用)

cookie 对象中包含了保存在浏览器的Cookie存储里面的数据,这些数据采用的是key-value的格式进行存储的。
存储量不大,一般大约4kb。而且在现有前端环境里面基本上都禁用了cookie,所以导致该对象现在被弃用了。

19.7 sessionStorage对象

sessionStorage 对象中包含了保存在浏览器的会话存储里面的数据,这些数据采用的是key-value的格式进行存储的。
理念上没有大小限制,而且几乎所有的前端环境都支持。
属性:
    length          返回 sessionStorage 里数据的条数
方法:
    setItem(key,value)  向 sessionStorage 插入/设置数据
    getItem(key)        根据 key 从sessionStorage中获取数据
    key(下标)         根据下标(从0开始)获取对应的key

19.8 localStorage对象

localStorage 对象中包含了保存在浏览器的本地存储里面的数据,这些数据采用的是key-value的格式进行存储的。
理念上没有大小限制,而且几乎所有的前端环境都支持。
用法和sessionStorage一样,区别在于:sessionStorage是基本会话的,如果浏览器选项卡关闭后sessionStorage会丢失。
                                localStorage是本地存储的,即使浏览器选项卡关闭后localStorage也不会丢失。

19.9 JavaScript中的JSON字符串

方法:
    stringify(对象)       是将object对象转换为string字符串
    parse(字符串)          是将string字符串转换为object对象

19.10 window弹框

alert(参数)           在浏览器窗口中弹出一个提示框
confirm(参数)         在浏览器中弹出一个确认对话框,并返回一个boolean数据,表示是否点击了“确认”
prompt(参数)          在浏览器中弹出一个可供用户输入的对话框,并返回一个string数据或者null,表示用户输入的内容。
                            当点击“ok”返回字符串或者空字符串
                            当点击“cancel”返回null
​
​
close()              【过时】关闭浏览器窗口
  1. alert("hello world !");
  2. let value=confirm("hello!");
  3. console.log(value);
  4. let value1=prompt("world !");
  5. console.log(value1);

20. 定时器

定时器,有时也称为“计时器”,用来在经过指定的时间后执行某些任务,类似于我们生活中的闹钟。
在 JavaScript 中,我们可以利用定时器来延迟执行某些代码,或者以固定的时间间隔重复执行某些代码。

20.1 setTimeout && setInterval

创建定时器

我可们以用setTimeout()和setInterval()来实现,这俩方法都是window对象方法。
setTimeout(处理函数, 时间);
    在指定的时间后(单位为毫秒),执行处理函数,代码只会执行一次;
    
setInterval(处理函数, 时间)
    在指定的时间后(单位为毫秒),执行处理函数,代码会自动重复执行下去;

20.2 clearTimeout && clearInterval

停止定时器

clearTimeout(id)
    这里的参数id是setTimeout()方法的返回值
    
clearInterval(id)
    这里的参数id是setInterval()方法的返回值
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>学习其他</title>
  6. </head>
  7. <body>
  8.    <button class="but" onclick="cl()">3秒后提示框</button>
  9.    <button class="cancel" onclick="cl1()">setTimeout取消</button>
  10.    <button class="cancel" onclick="cl2()">setInterval取消</button>
  11. </body>
  12. <script>
  13.    // setTimeout标识
  14.    let cancel;
  15.    // setInterval
  16.    let cancel1;
  17.    // setTimeout与setInterval事件绑定
  18.    function cl(){
  19.        cancel=setTimeout(function(){
  20.            console.log("hello world !");
  21.       },3000);
  22.        cancel1=setInterval(function(){
  23.            console.log("你好!世界...");
  24.       },1000);
  25.   }
  26.    // clearTimeout事件绑定cl1()
  27.    const cl1=function(){
  28.        console.log("cancel!!!");
  29.        clearTimeout(cancel);
  30.   }
  31.    // clearInterval事件绑定cl2()
  32.    function cl2() {
  33.        console.log("cancel1!!!");
  34.        clearInterval(cancel1);
  35.   }
  36. </script>
  37. </html>
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/155233
推荐阅读
相关标签
  

闽ICP备14008679号