1.绑定事件的方法
(1)在html标签中绑定,可以在该元素的properties的属性中可以查看到,也可以在事件监听中看到
<button onclick="show()">点击<button>
一个事件触发两种方法
<button onclick="show();print()"><button>
(2)js事件绑定,可以在该元素的properties的属性中可以查看到,也可以在事件监听中看到
<button id="btn">点击<button>
<script>
let btn = document.querySelector("#btn")
btn.onclick = function() {}
<script>
用js绑定的方法,一个事件不能同时绑定方法
(3)事件监听,只能在该元素的事件监听中看到
<button id="btn">点击<button>
<script>
let btn = document.querySelector("#btn")
btn.addEventListener("click",function(){})
<script>
用事件监听的方法,可以同时绑定多个方法
2.执行上下文
(1)上下文 vs 作用域
(1)首先需要说明的是上下文和作用域是不同的概念。
(2)每个函数调用都有与之相关的作用域和上下文。从根本上说,作用域是基于函数,而上下文是基于对象。
(3)作用域是和每次函数调用时变量的访问有关,并且每次调用都是独立的。上下文总是关键字 this 的值,是调用当前可执行代码的对象的引用。
(2)“this” 上下文
(1)上下文通常是取决于一个函数如何被调用。当函数作为对象的方法被调用时,this 指向调用方法的对象。
(2)当调用一个函数时,通过 new 操作符创建一个对象的实例,当以这种方式调用时,this 指向新创建的实例。
(3)当调用一个未绑定函数,this 默认指向全局上下文或者浏览器中的window对象。然而如果函数在严格模式下被执行(“use strict”),this 默认指向 undefined。
(3)执行上下文
(1)当函数执行时,会创建一个称为执行上下文的内部对象(可理解为作用域,不是前面讨论的上下文)。一个执行上下文定义了一个函数执行时的环境。
(2)函数每次执行时对应的执行上下文都是独一无二的,所以多次调用一个函数会导致创建多个执行上下文。
(3)当javascript代码文件被浏览器载入后,默认最先进入的是一个全局的执行上下文。当在全局上下文中调用执行一个函数时,程序流就进入该被调用函数内,此时引擎就会为该函数创建一个新的执行上下文,并且将其压入到执行栈顶部(作用域链)。浏览器总是执行位于执行栈顶部的当前执行上下文,一旦执行完毕,该执行上下文就会从执行栈顶部弹出,并且控制权将进入其下的执行上下文。这样,执行栈中的执行上下文就会被依次执行并且弹出,直到回到全局的执行上下文。
执行上下文分为:
- 全局执行上下文
创建一个全局的window对象,并规定this指向window,执行js的时候就压入栈底,关闭浏览器的时候才弹出 - 函数执行上下文
每次函数调用时,都会新创建一个函数执行上下文
执行上下文分为创建阶段和执行阶段
创建阶段:函数环境会创建变量对象:arguments对象(并赋值)、函数声明(并赋值)、变量声明(不赋值),函数表达式声明(不赋值);会确定this指向;会确定作用域
执行阶段:变量赋值、函数表达式赋值,使变量对象编程活跃对象 - eval执行上下文
执行栈:
- 首先栈特点:先进后出
- 当进入一个执行环境,就会创建出它的执行上下文,然后进行压栈,当程序执行完成时,它的执行上下文就会被销毁,进行弹栈。
- 栈底永远是全局环境的执行上下文,栈顶永远是正在执行函数的执行上下文
- 只有浏览器关闭的时候全局执行上下文才会弹出
3.判断是否是数组
(1)用instanceof
function isArray(arr) {
console.log(arr instanceof Array)
}
(2)使用Object.prototype.toString.call(arr)
function isArray(o) {
return Object.prototype.toString.call(o);
}
(3)使用Array.isArray
function isArray(arr) {
return Array.isArray(arr)
}
4.HTTP状态码
- 2开头的表示成功
- 一般见到的就是200
- 3开头的表示重定向
- 301永久重定向
- 302临时重定向
- 304表示可以在缓存中取数据(协商缓存)
- 4开头表示客户端错误
- 403禁止请求
- 404请求资源不存在
- 5开头表示服务端错误
- 500
- 本文链接:http://horry233.github.io/2021/03/12/%E9%9D%A2%E8%AF%95%E5%B0%8F%E7%BB%93/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues