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

 

版权声明:本文为博主原创文章,转载请附上原文出处链接
原文地址:https://www.cnblogs.com/IT-LFP/p/10945884.html