摘要:
Sealed Class 密封类 如果想对能够创建出的子类做限制,可以使用密封类。 下面一个例子是没有使用密封类的: interface Expr class Num(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) 阅读全文
摘要:
前面两篇笔记中介绍了JS引擎的运行模式,它是以任务为中心,一个任务就是一个函数,一个任务一旦执行,没有人能够打破这个执行,这也保证了JS中不会发生类似Java等抢占式多线程编程语言的竞态问题。 生成器打破了这个完整性,它允许一个函数在执行过程中主动暂停,保存状态,将执行控制权让给其它函数。生成器在很 阅读全文
摘要:
问题:想在IDEA中引用相对路径,但是找不到文件。 项目目录结构 当前项目的路径为:D:\source\java\test\ 项目结构如下 当前路径 面对无法使用相对路径找到资源文件的问题,首先想到的解决办法是先瞄一眼IDEA在执行时给Java环境设定的当前路径在哪,也就是说看看我们在使用相对路径时 阅读全文
摘要:
宏任务和微任务 PS:这里可以选择性忽略,直接从第二块内容看起。 上一篇笔记介绍了JS中的异步任务执行模型,但那个模型对现在的JS来说,有些落后了,如今的JS有了Promise等更多更先进的异步编程工具,这个模型当然也要随之更新。 新增的内容就是微任务队列(MicroTasks Queue V8术语 阅读全文
摘要:
异步编程 夏天太热了,我买了几颗柠檬,准备做柠檬茶。 我先烧了开水,把茶泡上了,但是突然想起好像之前不知道从哪里听说的,如果把柠檬或者蜂蜜直接丢进热水里会发苦。我不知道是不是真的,而且就算不是真的,我也不能把一壶滚烫的茶水直接灌进塑料瓶里。 所以我只能先把它放在那,好在我的水壶是智能的,我设置了等它 阅读全文
摘要:
混入 JavaScript和传统的面向对象编程语言有很大差异,实际上它没有类,只有对象,那么自然也就不存在继承、多态这些东西。 混入是在JS中实现传统面向对象模式的一个办法。 function mixin(parentObj,childObj){ for(var key in parentObj){ 阅读全文
摘要:
之前一直不知道this到底代表啥,只知道它和一般面向对象编程语言中的this一定不同。 JavaScript中的this可以在函数中使用,是编译器通过一些条件在函数被调用时绑定进对应作用域的的一个变量,可以明确知道的是,这个变量一定是一个对象,所以你可以用this.xxx的方式访问一个属性。 可以看 阅读全文
摘要:
原书《你不知道的JavaScript》 解释型 or 编译型 JavaScript早已不是以前的JavaScript了,早期的JS确实仅仅是生成AST(抽象语法树)然后直接解释执行。但随着JS的应用越来越广,不仅仅局限于浏览器端,所以早先的解释执行已经不能满足大家对它的性能需求了,chrome v8 阅读全文
摘要:
前言 前几天做实训作业时候发现JS功底真的不咋地,尤其是在操作DOM上。 尽管现在前端程序员直接操作DOM的机会不多了,但是不补上,总觉得缺点什么。 开始刷《JavaScript DOM编程艺术》。 平稳退化 平稳退化的意思就是当用户的浏览器不支持JavaScript时,你的网站也能让用户正常访问, 阅读全文
摘要:
对于所有对象都通用的方法 Object类中有很多通用方法,比如equals、toString、hashCode,还有实现了Comparable的类,它们的方法都有明确的约定,如果你想你的类能与其他类良好的工作在一起,请遵守这些约定。 覆盖equals方法 其实很多时候equals方法根本不需要被覆盖 阅读全文