摘要: let和const命令 let命令 循环体的let变量只对花括号作用域可见,花括号外不可见 循环体的语句部分是一个父作用域,而循环体内部是一个单独的子作用域 let声明的变量不存在变量提升,未声明的使用会报错 只要块级作用域内存在let声明,它所声明的变量就绑定了这个区域,不再受外部的影响 let不 阅读全文
posted @ 2018-10-23 21:10 戡玉 阅读(460) 评论(0) 推荐(1) 编辑
摘要: 准备知识 在看ajax实现的时候,如果对ajax技术知识不是很懂的话,可以参看下 "ajax基础" ,以便读分析时不会那么迷糊 全局ajax事件 默认$.ajaxSettings设置中的global为true,因此在Ajax请求的生命周期内,这些事件将被触发: 默认情况下,ajax事件在docume 阅读全文
posted @ 2018-10-23 20:13 戡玉 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 准备知识 事件的本质就是发布/订阅模式,dom事件也不例外;先简单说明下发布/订阅模式,dom事件api和兼容性 发布/订阅模式 所谓发布/订阅模式,用一个形象的比喻就是买房的人订阅楼房消息,售楼处发布消息,体现为代码的话就是如下形式 DOM/Event 兼容性 1.focus/blur和mouse 阅读全文
posted @ 2018-10-23 20:12 戡玉 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 准备说明 该模块定义了库的原型链结构,生成了Zepto变量,并将其以'Zepto'和'$'的名字注册到了window,然后开始了其它模块的拓展实现。 模块内部除了对选择器和zepto对象的实现,就是一些工具方法和原型方法的定义。 值得一提的是,内部很多实现都利用了原生数组的方法,很多api也是基于内 阅读全文
posted @ 2018-10-23 20:11 戡玉 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 代码数量 1.2.0版本代码量为1650行,去掉注释大概1500左右 代码模块 默认版本只包括核心模块,事件模块,ajax模块,form模块和ie模块,其它模块需要自行拓展加入,其中form模块只包含序列化操作和submit提交事件实现,ie模块只包括一点兼容性处理,两者码量极少,因此不做分析 执行 阅读全文
posted @ 2018-10-23 20:10 戡玉 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 对一般兼容性和特点做了标识(主要是ie8+) ##节点类型 节点类型 节点值 标签节点(Element) 1 属性节点(Attr) 2 文本节点(Text) 3 CDATA节点(CDATASetion) 4 实体引用节点(EntityReference) 5 实体节点(Entity) 6 处理指令节 阅读全文
posted @ 2018-10-23 20:09 戡玉 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 坐标(鼠标/触摸) event.screenX 鼠标/触摸,相对于显示屏的X坐标 event.screenY 鼠标/触摸,相对于显示屏的Y坐标 event.clientX 鼠标/触摸,相对于浏览器视口的X坐标 event.clientY 鼠标/触摸,相对于浏览器视口的Y坐标 event.pageX 阅读全文
posted @ 2018-10-23 20:08 戡玉 阅读(1126) 评论(0) 推荐(0) 编辑
摘要: 词法作用域 1. 作用域就是,程序查找变量和有效执行所在的区域,也称词法作用域。 1. 词法作用域分为,静态作用域和动态作用域。 1. 静态作用域取决于程序代码定义的时候,动态作用域取决于程序动态执行时的具体作用域环境。 1. js采用静态作用域,对于变量对象的获取只基于定义环境,而不受执行变化的影 阅读全文
posted @ 2018-10-23 20:07 戡玉 阅读(692) 评论(0) 推荐(0) 编辑
摘要: js的单线程模型与游览器的进程/线程息息相关,在了解js单线程与异步的时候,建议先看看这篇文章 为什么是单线程 由于js是可操作dom的,如果js是多线程,在多线程的交互下,处于界面中的dom节点就可能成为一个临界资源。 这个时候,如果两个线程同时操作一个dom,一个负责修改,一个负责删除,这时就会 阅读全文
posted @ 2018-10-23 20:05 戡玉 阅读(880) 评论(0) 推荐(0) 编辑
摘要: 下面是一个理论上的模型,js引擎着重实现和优化了描述的这几个语义 可视化描述 栈(stack) js会以一种执行栈的方式去执行代码,以一种入栈和出栈的方式,后进先出的完成代码执行,用下图表示如下(上下文描述可以忽略,有兴趣的可以参考 "这篇文章" ,此文不作讲解): 堆(heap) 简单点说,就是一 阅读全文
posted @ 2018-10-23 20:03 戡玉 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 职业角度 用户体验(用户)——技术的使命应该是追求极致的用户体验,为产品创造价值。不应该为了技术而技术,而应该更多地从产品实际出发,积累产品思维 生产效率(公司)——技术的产出应该快速高效,为开发节省时间,也是为公司节省成本 编码质量(程序员)——代码的可维护性和拓展性是程序员的必修法则 生活角度 阅读全文
posted @ 2018-10-23 20:02 戡玉 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 持续积累中~ 拓展原型 Function.prototype.method = function (name, extend) { if (!this.prototype[name]) { this.prototype[name] = extend; } return this; }; 实现继承·方 阅读全文
posted @ 2018-10-23 08:51 戡玉 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 字符串转数字: 。 其他类型转字符串: 。 ,可以将值转换为布尔类型。 ,可以将值转换为布尔类型并取反。 ,在进行条件判断时,会被自动转换为 。 都可以通过 转换为对应值。 会自动过滤掉不存在的元素(比如数组设置length数)。 数组 设大不会分配更多空间。 数组 只会删除值,不会删除数组位。 对 阅读全文
posted @ 2018-10-23 08:50 戡玉 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 针对js严格模式 会报错的编码操作 进行了整理,避免不严谨的代码习惯,面向未来编程(es6+) 变量 1.定义八进制格式的数字 2.不带var的变量定义——包括函数体内的 3.对变量的delete操作——除非对象设置configurable为true 语句 1.使用with语句 对象 1.定义Obj 阅读全文
posted @ 2018-10-23 08:49 戡玉 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 生命周期 无论什么编程语言,内存生命周期都是一致的————分配,使用,释放 内存管理 1.某些类似C语言的程序,一般都有内存管理接口,开发人员需要显式分配和释放操作系统的内存 2.javascript会自动进行内存分配,并在不被使用时进行自动释放,这个过程被称为“垃圾回收” 垃圾回收 1.有两种回收 阅读全文
posted @ 2018-10-23 08:48 戡玉 阅读(144) 评论(0) 推荐(0) 编辑