红色箭头代表捕获阶段 蓝色代表目标阶段 绿色代表冒泡阶段 调用元素对象的addEventListener()方法,参数:事件,回调函数,是否捕获(true代表捕获阶段,false代表冒泡阶段,ie浏览器不支持在捕获阶段绑定事件因此一般写false) <body> <button id="btn">点击</button> <script type="text/javascript"> var btn=document.g…
知乎:到底什么是闭包? 寸志: JavaScript 闭包的本质源自两点,词法作用域和函数当作值传递. 词法作用域,就是,按照代码书写时的样子,内部函数可以访问函数外面的变量.引擎通过数据结构和算法表示一个函数,使得在代码解释执行时按照词法作用域的规则,可以访问外围的变量,这些变量就登记在相应的数据结构中. var x=23333; function test(){ alert(x); } test(); //弹出23333 函数当作值传递,即所谓的first class对象.就是可以把函数当作…
今日和一位前端童鞋聊了下js触发事件的两种形式: 第一种在jsp/vm上做类似onClick=functionName()的触发:另一种是在js文件中增加对应节点的监听事件触发.前者页面掺杂了js的内容,但是代码阅读性更容易点,后者页面纯碎是html,触发事件和效果处理都在js中,层次分明,但是代码阅读性查点,需要依据节点对应的id或者class寻找对应的触发事件. 代码内容后续补齐...…
1.常用的事件: ① onload:页面加载 ② onblur: 失去焦点 onfocus: 获取焦点 ③ onclick:点击 ④ onmouseover:鼠标经过 onmouseout:鼠标离开 ⑤ onchange:内容改变 ⑥ onsubmit:表单提交 2.绑定事件方式: (1)行内绑定: <元素 事件="事件处理程序(函数)"> <script> function 函数名(){ console.log(this); //行内绑定的this是指向win…
回顾之前已经使用过的事件 (onsubmit.onclick.onload.onfocus.onblur.onmouseover.onmouseout) onfocus/onblur:聚焦离焦事件,用于表单校验的时候比较合适(出现”用户名必填“等等) onclick/ondblclick:鼠标单击和双击事件 onkeydown/onkeypress:搜索引擎使用较多 onload:页面加载事件,所有的其它操作(匿名方式)都可以放到这个绑定的函数里面去.如果是有名称,那么在html页面中只能写一个…
序:闭包这个玩意啊~在很多没有代码块的语言中都会出现,已经成为大多程序员入门的一道坎,闭包让很多程序员觉得晦涩(事实上百度一下这个名词,真的说的很晦涩啊亲==|||),我第一次知道闭包这个名词是从<JavaScript权威指南>中读到的,当时还是2015年的3月份,我刚开始看寒假购买的书,前女友说这本书封面上的犀牛丑死了,我说"你懂啥!"==||| 话不多说,经过一番回忆,我想起来闭包这个东西直到分手后的5个月里都没有搞清楚,某一天我在实验室写完了三段js代码对比后,我了悟…
简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 知乎:学习java应该如何理解反射?   余晖: 反射提供了一种运行期获取对象元信息的手段.写框架代码用的比较多,因为需要运行时动态获取和操作对象的属性和方法.尽量少用反射,会有性能开销,大多数场景下可以用设计模式代替 知乎:Java 反射到底慢在哪里? 松鼠奥利奥: 对于 Java 的依赖注入容器而言,反射慢在把装载期做的事情搬到了运行期.但这是没有选择的事情,…
factory的“本质”就是根据不同的输入创建出不同类型的对象. 引入factory的原因就是你需要根据不同的输入创建不同类型的对象. 简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可.但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护. 工厂方法模式相当于在简单工厂模式的基础上增加一个抽象工厂,在简单工厂模式下如果增加一个产品,要修改工厂类,不符合开闭原则.在工厂方法下,只需要增加具体工厂和具体产品即可. 抽象工厂,类…
var events = require('events'); var EventEmitter = events.EventEmitter(); //监听这个名为TestE事件 EventEmitter.on("TestE", function() { console.log('这是回掉函数'); }); //调用这个TestE事件并将这些参数传进去 EventEmitter.emit("TestE", [arg1], [arg1]..); //取消监听这个名为T…
JavaScript初探 (三) JavaScript数组 定义 创建数组 var 数组名 = [元素0,元素1,元素2,--] ; var arr = ["Huawei","China","Mirror"]; 同时JavaScript也支持 new Array 创建数组.但是建议使用上面的文本方式创建数组 数组访问 通过引用 索引号(下标) 来引用某个数组元素 var name = arr[0]; // name = Huawei ps:数组的…