为什么需要事件委托

什么是事件委托?事件委托的原理又是什么?事件冒泡和事件捕获的区别又在哪里? 要解答上面三个问题,我们要一步步弄清楚事件机制:事件流 -> 事件冒泡 -> 事件捕获 -> 事件委托 事件流描述了页面接收事件的顺序。IE 和 Netscape 开发团队提出了几乎完全相 反的事件流方案。IE 支持事件冒泡流,而 Netscape 支持事件捕获流。 事件冒泡IE 事件流被称为事件冒...

发布于 前端

全面解析JavaScript中的原型

JavaScript 是一门面向对象的语言,但与其他面向对象语言 Java、python (基于类继承) 不同,它的继承方式是基于原型实现的。 原型 几乎每个JavaScript对象都有另一个与之关联的对象,这个对象被称为原型 ( prototype ),第一个对象从这个原型继承属性。 通过对象字面量创建的所有对象都有相同的原型对象,在JavaScript代码中可以通过 Object.p...

发布于 前端

全面解析JavaScript中的执行上下文

想要了解作用域,就必须先了解执行上下文。 变量或函数的上下文决定了它们可以访问哪些数据,以及它们的行为。每个上下文都有一个关联的变量对象(variable object),而这个上下文中定义的所有变量和函数都存在于这个对象上。 全局上下文是最外层的上下文。在浏览器中,全局上下文就是 window 对象,因此所有通过 var 定义的全局变量和函数都会成为 window 对象的属性和方法。使用 ...

发布于 前端

JS+CSS手风琴动画效果

手风琴动画效果:当点击某个选项卡时,该选项卡展示内容,其他选项卡的内容收起,无论展示还是收起都带有过渡效果 效果图如下: 思路:为每个选项卡设置点击事件,修改dom元素样式 难点:过渡动画的实现。刚开始我使用display:block或display:none控制内容的显示与隐藏,但是发现display并没有动画效果,后来想使用height,但元素高度不固定(高度由内容撑开),也没法实现动...

发布于 css案例

对一道循环计数题进行解剖

题如下: 123456789//想要效果:在for循环内,使用setTimeout延迟两秒后,依次打印i的值:0,1,2,3,4for(var i=0;i<5;i++){ setTimeout(()=>{ console.log(i) },2000)} 上述代码最终的执行结果:延迟2秒后,在控制台中打印了...

发布于 前端

token的使用

tp6实现JWTcomposer安装JWT 1composer require firebase/php-jwt 引入并使用 123456789101112131415161718192021222324252627282930313233343536373839404142//引入token工具use Firebase\JWT\JWT;use Firebase\JWT\Key;class...

发布于 后端

对象关联和行为委托

对象关联和行为委托创建关联1234567let foo = { something: function(){ console.log("Tell me something good...") }};let bar = Object.create(foo); //Object.create(..)会创建一个新...

发布于 前端

生成器generator

生成器执行例子1234567891011121314151617//构造生成器函数 var a = 1; var b = 2; function *foo() { a++; yield; b = b * a; a = (yield b) + 3; &#...

发布于 前端

生成器和异步

将异步代码变成同步(阻塞),例:你想向后台发送请求,只有当数据返回时才打印 发送ajax请求的方法 需要一个方法,发送请求后判断数据是否成功返回,继续往下执行 需要一个方法,等待数据返回,执行打印操作 1234567891011121314151617181920212223242526272829303132333435363738394041let path = 'http...

发布于 前端

迭代器实现array和对象遍历

迭代数组1234567891011121314151617181920212223242526272829//迭代数组 var something = (function(array){ var arr = array //数组 var nextVal; //遍历的下个值 var i = 0; //...

发布于 前端