防止冒泡
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
stopPropagation也是事件对象(Event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为。什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。stopPropagation就是阻止目标元素的事件冒泡到父级元素。
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
stopPropagation也是事件对象(Event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为。什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。stopPropagation就是阻止目标元素的事件冒泡到父级元素。
执行上下文(EC)就是当前JavaScript代码被解析和执行是所在环境的抽象概念,JavaScript中运行任何的代码都是在执行上下文中运行。
1 | if(!("a" in window)){ // false |
1 | function foo() { |
函数表达式执行的优先级==!主要原因是函数声明都被提前了,所以函数表达式在最后会覆盖。
JavaScript 引擎并非一行一行地分析和执行程序,而是一段一段地分析执行。插槽slot 可执行代码的类型:全局代码、函数代码、eval代码。 JavaScript 引擎创建了执行上下文栈(Execution context stack,ECS)来管理执行上下文
作用域是我们可以有效访问变量或函数的区域,包含全局作用域、函数作用域、块级作用域(ES6) 三种;
JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。它的作用域是指在词法分析阶段就确定了,不会改变。而与词法作用域相对的是动态作用域,
函数的作用域是在函数调用的时候才决定的。
函数的作用域在函数定义的时候就决定了,函数的作用域基于函数创建的位置。
原型对象的用途是为每个实例对象存储共享的方法和属性,它仅仅是一个普通对象而已,仅有一份。
每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时, 如果这个对象内部不存在这个属性,那么它就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念
原型是一个用于实现对象属性继承的对象。
我们先使用构造函数创建一个对象:
1 | function Person() {} |
在这个例子中,Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person。
Async/Await是一种允许我们像构建没有回调函数的普通函数一样构建Promise的新语法。以往的异步方法无外乎回调函数和Promise
。但是Async/Await建立于Promise之上。