YvetteLau
YvetteLau
> babel 多了个 e 。 改了改了~
> https://github.com/jdf2e/rocketact 了解一下 😆 赞赞赞~受启发了,下次再写webpack配置的时候,要顺便写个脚手架,方便他人阅读~~~
> chrome inspect 调试微信/QQ是可以的哦, 参考下面 > > > https://x5.tencent.com/tbs/guide/debug/faq.html 感谢~
**说明:**一道经典的面试题,仅是为了帮助大家回顾一下知识点,加深理解,真实工作中,是不可能这样写代码的,否则,肯定会被打死的。 1.首先预编译阶段,变量声明与函数声明提升至其对应作用域的最顶端。 因此上面的代码编译后如下(函数声明的优先级先于变量声明): ```javascript function Foo() { getName = function() {console.log(1)}; return this; } var getName; function getName() {console.log(5)}; Foo.getName = function() {console.log(2)}; Foo.prototype.getName = function() {console.log(3)}; getName = function()...
嗯呢,忘记修改了~其它平台已经更新过~ 非常感谢👍
> 请问这个题又如何解释? > var value = 1; > > var foo = { > value: 2, > bar: function () { > return this.value; > } > } > >...
> 有种特殊情况,当this遇到return,如果返回值是一个对象,那么this指向的就是那个返回的对象,如下: > function fn() { > this.name = 'james'; > return {}; > } > let a = new fn; > console.log(a.name); // undefined 感谢~ 如果return一个对象或者是function的话,this指向的是这个对象或者是function~ 非常非常感谢~
HTML5则提出了 Web Worker 标准,表示js允许多线程,但是子线程完全受主线程控制并且不能操作dom,只有主线程可以操作dom,所以js本质上依然是单线程语言。 web worker就是在js单线程执行的基础上开启一个子线程,进行程序处理,而不影响主线程的执行,当子线程执行完之后再回到主线程上,在这个过程中不影响主线程的执行。子线程与主线程之间提供了数据交互的接口postMessage和onmessage,来进行数据发送和接收。 ```javascript var worker = new Worker('./worker.js'); //创建一个子线程 worker.postMessage('Hello'); worker.onmessage = function (e) { console.log(e.data); //Hi worker.terminate(); //结束线程 }; ``` ```javascript //worker.js onmessage = function...
在说浏览器事件代理机制原理之前,我们首先了解一下事件流的概念,早期浏览器,IE采用的是事件捕获事件流,而Netscape采用的则是事件捕获。"DOM2级事件"把事件流分为三个阶段,捕获阶段、目标阶段、冒泡阶段。现代浏览器也都遵循此规范。  > 那么事件代理是什么呢? 事件代理又称为事件委托,在祖先级DOM元素绑定一个事件,当触发子孙级DOM元素的事件时,利用事件冒泡的原理来触发绑定在祖先级DOM的事件。因为事件会从目标元素一层层冒泡至document对象。 > 为什么要事件代理? 1. 添加到页面上的事件数量会影响页面的运行性能,如果添加的事件过多,会导致网页的性能下降。采用事件代理的方式,可以大大减少注册事件的个数。 2. 事件代理的当时,某个子孙元素是动态增加的,不需要再次对其进行事件绑定。 3. 不用担心某个注册了事件的DOM元素被移除后,可能无法回收其事件处理程序,我们只要把事件处理程序委托给更高层级的元素,就可以避免此问题。 > 如将页面中的所有click事件都代理到document上: addEventListener 接受3个参数,分别是要处理的事件名、处理事件程序的函数和一个布尔值。布尔值默认为false。表示冒泡阶段调用事件处理程序,若设置为true,表示在捕获阶段调用事件处理程序。 ```javascript document.addEventListener('click', function (e) { console.log(e.target); /** * 捕获阶段调用调用事件处理程序,eventPhase是 1; * 处于目标,eventPhase是2 *...
> 第三个参数也接收一个对象 > `{capture:false ,once:true ,passive:true}` > > **capture**:该类型的事件冒泡阶段触发, > **once**:添加之后最多只调用一次, > **passive**:表示永远不会调用 preventDefault()。 > > 并且不同的事件处理程序的 passive 的默认是不一样的。 > 在移动端的 touchmove 事件中 passive 值默认为 true,如果要在移动端中阻止滚动的话,要手动将 passive 设置为 false。 稍后更正一下~非常感谢~