zoukankan      html  css  js  c++  java
  • JavaScript

    四、  JavaScript

    1.  JavaScript 的引入方式

    1.1  内部引入脚本块 <script>.......</script>

    1.1.1  通常把脚本块置于 <body></body> 的底部,改善网页显示速度

    1.2  外部资源引入  <script  src="myScript.js"  type="text/javascript"></script>

    2.  JavaScript 的输出

    2.1  window.alert(""); 警告框输出

    2.2  document.getElementById("demo").innerHTML = ""; HTML 的元素输出

    2.3  console.log(""); 浏览器的控制台输出

    2.4  document.write(""); HTML 输出

    2.5  window.confirm(""); 确认框输出

    2.6  window.prompt("请输入你的姓名:", "defaultText"); 提示框输出

    3.  Number 数值

    var a = 1;
    var b = 3.14;
    var c = 123e5;
    var d = 123e-5;
    
    // Infinity (或 -Infinity)是 JavaScript 在计算数时超出最大可能数范围时返回的值。typeOf Infinity 返回 number,除以 0 也会生成 Infinity
    var inf = Infinity;
    
    // 在数学运算中使用了 NaN 表示非数字值("Not-a-Number"),则结果也将是 NaN,typeof NaN 返回 number 
    var na = NaN;
    
    a.toString(16);     // 返回对应的 十六进制数
    a.toString(8);      // 返回对应的 八进制数
    a.toString(2);      // 返回对应的 二进制数
    
    // 返回 JavaScript 中可能的最大数字
    var max = Number.MAX_VALUE;
    
    // 返回 JavaScript 中可能的最小数字
    var min = Number.MIN_VALUE;
    
    // 一切皆对象,数值也可以是Object类型
    var z = new Number(100);

    3.1  常用的数值方法

    3.2  常用的 Math 方法

    4.  Array 数组

        // 数组的创建
        var a = new Array();
        var b = new Array(2);
        var c = new Array("张三", "李四", "王五");
        // 建议使用 [] 
        var d = [];
        var e = ["张三", "李四", "王五"];
        // 数组的返回类型是 object 类型
        typeof a;

    4.1  常用的数组方法

    5.  String 字符串

    // typeof x 将返回 string
    var x = "Bill";
    // typeof y 将返回 object
    var y = new String("Bill");

    5.1  常用的字符串方法

    6.  Date 日期

        // 创建日期 typeof date 将返回 object
        new Date();
        new Date(year, month, day, hours, minutes, seconds, milliseconds);
        new Date(milliseconds);
        new Date(date string);
        new Date("yyyy-MM-dd hh:mm:ss");

    6.1  常用的日期获取方法

    7.  JavaScript 的函数(方法)定义

        // 声明式
        function methodName() {
        }
        // 赋值式,也叫匿名函数(方法),一般用在回调函数时
        var f = function(arg1, arg2, ...) {
        };
        // 函数构造器,说明函数也是 object 对象
        var f1 = new Function("a", "b", "return a*b");
        // 自调用函数,
        (function () {
            var x = "Hello!!";  // 我会调用我自己
        })();

    7.1  JavaScript 函数 Call 和 Apply

    /* call() 和 apply() 方法非常相似,都能调用不同对象的属性方法
       call() 和 apply() 都可接受参数,唯一不同的是
       call() 方法“分别接受”参数
       apply() 方法接受“数组形式”的参数。*/
    
    var person = {
      fullName: function(city, country) {
        return this.firstName + " " + this.lastName + "," + city + "," + country;
      }
    }
    var person1 = {
      firstName:"Bill",
      lastName: "Gates"
    }
    person.fullName.call(person1, "Seattle", "USA");
    person.fullName.apply(person1, ["Seattle", "USA"]);

    8.  JavaScript 的对象定义

    var Person = {
          firstName: "张三",
          lastName: ""
          age: 20,
          friends: [
                {name: "李四"},
                {name: "王五"}
          ],
          // 创建对象方法
          methodName: function(){
                alert("hello");
          },
          // JavaScript访问器 Setter
          set setName(name){
                this.lastName = name;
          },
          // JavaScript访问器 getter
          get getFirstName(){
                return this.firstName;
          }
    };

    8.1  访问 JavaScript 对象的属性

    // 访问属性
    objectName.property;
    // 或者
    objectName["property"];

    8.2  删除 JavaScript 对象的属性

    // delete 关键词不会删除被继承的属性,但是如果删除了某个原型属性,则将影响到所有从原型继承的对象
    delete objectName.property;

    8.3  JavaScript 对象构造器

    // 构造方法名必须和对象名一致
    function
    Person(first, last, age, friends){ this.firstName = firstName; this.lastName = last; this.age = age; this.friends = friends; }

    8.4  JavaScript 的 prototype 属性允许为对象构造器添加新属性

    Person.prototype = {
    this.school: "",
    init: function(){},
    destroy: function(){},
    ... };

    9.  异常处理方式

    try {
         供测试的代码块
    }
    catch(err) {
         处理错误的代码块
    throw 语句允许你创建自定义错误 }
    finally { 无论 try / catch 结果如何都执行的代码块 }

    9.1  Error 对象属性

    9.2  Error 对象属性 name 的返回值

    10.  正则表达式

    // 语法
    /pattern/modifiers; 

    10.1  正则表达式修饰符 modifiers

    10.2  正则表达式模式 pattern

    10.2.1  括号用于查找一定范围的字符串:

    10.2.2  元字符(Metacharacter)是拥有特殊含义的字符:

    10.2.3  Quantifiers 定义量词:

    10.3  正则表达式常用的方法

    // search() 字符串方法
    var str = "hello, world!";
    var n = str.search(/world/i); // 返回字符串索引值 6
    
    // replace() 字符串方法
    var str = "hello, world!";
    var res = str.replace(/hello/i, "hi"); // 返回 hi, world!
    
    // test() 是一个正则表达式方法,通过指定的模式搜索字符串,根据结果返回 true 或 false
    /e/.test("The best things in life are free!");// 返回 true
    
    // exec() 是一个正则表达式方法,通过指定的模式搜索字符串,返回已找到的文本,否则返回 null
    /e/.exec("The best things in life are free!");// 返回 e

    11. HTML DOM 文档对象模型(Document Object Model)

    11.1  HTML DOM 是关于如何获取、更改、添加或删除 HTML 元素的标准。通过这个对象模型,JavaScript 获得创建动态 HTML 的所有能力

    11.2  获取 HTML 元素

    // 通过元素 id 来获取元素
    document.getElementById(id); 
    
    // 通过标签名来获取元素,返回 HTMLCollection 对象,length 属性定义了 HTMLCollection 中元素的数量
    document.getElementsByTagName(name);
    
    // 通过类名来获取元素
    document.getElementsByClassName(name);
    
    // 通过 CSS 选择器获取元素
    document.querySelector();
    // 返回 NodeList 对象,length 属性定义节点列表中的节点数
    document.querySelectorAll("p.p01");//返回 class="p01" 的所有 <p> 元素列表
    
    // 获取子元素
    element.childNodes();
    // 获取父元素
    element.parentNode();
    
    // 通过 HTML 对象选择器查找 HTML 对象
    document.forms["form_id"]; ... 

    11.3  改变 HTML 元素

    // 改变元素的 inner HTML
    element.innerHTML = content;
    
    // 改变 HTML 元素的属性值
    element.attribute = value; 
    element.setAttribute(attribute, value);
    element.getAttribute(attribute); element.classList.add(
    "");// 从类名表中添加类名 element.classList.remove("");// 从类名表中删除类名 // 改变 HTML 元素的 CSS 样式 element.style.property = style;

    11.4  添加和删除 HTML 元素

    // 创建 HTML 元素
    document.createElement(element);
    
    // 删除 HTML 元素
    document.removeChild(element);
    
    // 添加 HTML 元素
    element.appendChild(element);// 追加新元素作为父的最后一个子
    element.insertBefore(element01, element02);// 在element的子节点02前添加元素01
    
    // 替换 HTML 元素
    document.replaceChild(element);
    
    // 写入 HTML 输出流
    document.write(text);

    11.5  添加事件处理程序

    // 添加事件处理程序,也叫 DOM0级事件处理,存在事件覆盖
    element.onclick = function(){code};
    element.ondblclick = function(){code};
    
    element.onmouseover = function(){code};
    element.onmouseenter = function(){code};
    element.onmouseout = function(){code};
    
    element.onfocus = function(){code};
    element.onblur = function(){code};
    
    element.onkeyup = function(){code};// 按下并弹起按键时触发
    element.onkeydown = function(){code};// 按下按键时触发,系统已经接受用户的输入信息
    element.onkeypress = function(){code};// 按下按键时触发,系统未接受用户的输入信息
    
    element.getElementById(id).onchange = function(){code};
    
    /* onload 和 onunload 事件
    
       当用户进入后及离开页面时,会触发 onload 和 onunload 事件
    
       onload 事件可用于检测访问者的浏览器类型和浏览器版本,然后基于该信息加载网页的恰当版本
    
       onload 和 onunload 事件可用于处理 cookie。 */
    <body onload="checkCookies()"></body>

    11.6  添加事件监听程序

    /*  事件冒泡,最内侧元素的事件会首先被处理,然后是更外侧的:由内向外
        事件捕获,最外侧元素的事件会首先被处理,然后是更内侧的:由外到内   */
    
    // 添加事件监听程序,也叫 DOM2级事件处理,事件不覆盖
    element.addEventListener("click", function(){code}, true/false); //默认值是 false,将使用冒泡传播; true 则事件使用捕获传播
    element.addEventListener("transitionend", function(){code}, true/false);
    ...
    
    // 删除事件监听程序
    element.removeEventListener("click");
    
    // IE 8.0以下:attachEvent   datachEvent

    11.7  事件对象Event

    event.type;// 获取事件类型
    event.target;// 获取事件目标
    event.currentTarget;// 获取当前事件目标
    
    // 获取鼠标位置
    event.clientX;
    event.clientY;
    event.pageX;
    event.pageY;
    
    event.stopPropagation(); // 阻止事件冒泡
    event.preventDefault();// 阻止事件的默认行为

    12.  BOM 浏览器对象模型(Browser Object Model)

    12.1  Window 对象

    // 浏览器窗口尺寸,浏览器窗口不包括工具栏和滚动条
    var w = window.innerWidth
    || document.documentElement.clientWidth
    || document.body.clientWidth; // IE 8 以下
    
    var h = window.innerHeight
    || document.documentElement.clientHeight
    || document.body.clientHeight; // IE 8 以下 
    
    window.open(); // 打开新窗口
    window.close(); // 关闭当前窗口
    window.moveTo(); // 移动当前窗口
    window.resizeTo(); //重新调整当前窗口

    12.2  Window Screen

    // window.screen 对象可不带 window 前缀书写
    
    screen.width;// 返回访问者屏幕宽度
    screen.height;
    screen.availWidth;// 返回访问者屏幕宽度,减去诸如窗口工具条之类的界面特征
    screen.availHeight;
    screen.colorDepth;// 返回以位计的屏幕色彩深度
    screen.pixelDepth;// 返回屏幕的像素深度

    12.3  Window Location

    // window.location 对象可不带 window 前缀书写
    
    window.location.href;// 返回当前页面的 href (URL)
    window.location.hostname;// 返回 web 主机的域名
    window.location.pathname;// 返回当前页面的路径或文件名
    window.location.protocol;// 返回使用的 web 协议(http: 或 https:)
    window.location.assign("url");// 加载新文档

    12.4  Window History

    // window.history 对象可不带 window 前缀书写
    
    history.back();// 等同于在浏览器点击后退按钮
    history.forward();// 等同于在浏览器中点击前进按钮

    12.5  Window Timing 事件

    // window. 对象可不带 window 前缀书写
    
    // 在等待指定的毫秒数后执行函数
    var timeout = window.setTimeout(function, milliseconds);
    window.clearTimeout(timeout);
    
    // 等同于 setTimeout(),但持续重复执行该函数
    var timer = setInterval(function, milliseconds);
    clearInterval(timer);
    
    // 请求帧动画,回调稳步执行
    function render() {
        function(){code};
        requestAnimationFrame(render);// 请求帧动画, 回调稳步执行
    }
    render(); 

    12.6  Document Cookie

    // JavaScript 可以用 document.cookie 属性创建、读取、删除 cookie
    
    document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2018 12:00:00 UTC; path=/";

    13.  参考资料  http://www.w3school.com.cn/js/index.asp

    14.  入门案例  https://www.cnblogs.com/IT-LFP/p/10935124.html

     

    版权声明:本文为博主原创文章,转载请附上原文出处链接
  • 相关阅读:
    如何实现对ELK各组件的监控?试试Metricbeat
    Dubbo日志链路追踪TraceId选型
    Spring Security如何优雅的增加OAuth2协议授权模式
    聊一聊:MyBatis和Spring Data JPA的选择问题
    Java微服务 vs Go微服务,究竟谁更强!?
    你一定需要知道的高阶JAVA枚举特性!
    当音乐学博士搞起编程,用一本书改变了Java世界!
    Spring Boot 2.x基础教程:使用Flyway管理数据库版本
    文件上传的单元测试怎么写?
    Spring Boot 2.x基础教程:多个文件的上传
  • 原文地址:https://www.cnblogs.com/IT-LFP/p/10945884.html
Copyright © 2011-2022 走看看