js 进阶
haokur
你不必等到准备好一切 , 才出发
展开
-
也说说闭包
在一次面试的时候, 被问到谈谈闭包.一直觉得闭包这个词, 玄而又玄, 英文名叫 closure , 翻译过来叫闭包. 并不能一眼从字面上看出一点玄机.在用 chrome 浏览器调试的时候, 发现了函数对象上的一个 [[scope]] 属性. 数组类型. 凡自建函数 , [[scope]] 至少是有一个元素, 那就是全局作用域 也就是 整个 window 对象, 用 debugge...原创 2018-05-26 02:00:24 · 267 阅读 · 0 评论 -
javascript 基本方法扩展
一门语言会涌现出大量框架和库,说明它本身的不完善性。js 本身实现了核心功能,一些高级方法,需要使用者去完善。市面上有多如牛毛的库,这里也提供一些应用中常用的高级方法。原创 2018-07-18 17:12:58 · 452 阅读 · 0 评论 -
javascript 进阶之 - 预编译
引言在 javascript 的世界里, 恨不能所有的东西都能打印, 都能 debugger 打断点, 一步一步看其执行的逻辑 . 但是:有些属性限制了访问, 比如 [[Scopes]] , [[Class]] [[Caller]] … 让你不得而知其到底是个啥, 只能道听途说, 半猜地似懂非懂. 有些内置方法, 无法用代码查看 , 比如 Object 里面到底都进行了哪些操作.有些...原创 2018-06-02 14:34:45 · 205 阅读 · 0 评论 -
Javascript 那些套路
模块化 自己想要一个库 , 想让这个库可以通过 import 或者 require 导入, 也兼容浏览器直接导入时. ( 以 Tool 为例); (function (global, factory) { var isSupportModule = typeof exports !== 'undefined' && typeof module !== 'undef...原创 2018-06-14 15:29:31 · 460 阅读 · 0 评论 -
javascript 进阶之 - 执行上下文
引言执行上下文 = 执行 + 上下文 ;也就是说执行上下文, 必然是伴随这执行的发生. 那么怎么才能执行?浏览器解析到 <script> 标签时或者成功加载外部脚本后, 会逐行执行, 也叫全局执行.在逐行读到函数调用时, 也会执行, 这是函数的执行.还有逐行读到比较特殊的 eval 语句, 也会执行 , 暂且称作 eval 执行. 相应的执行则会生成不同的上...原创 2018-06-05 18:39:03 · 483 阅读 · 0 评论 -
javascript 进阶之 - 原型和原型链
引言常规情况 , 原型 prototype 本质是一个对象 {} ; 原型链的 链 本质是一个对象引用 , 指向特定的 prototype 对象 ; prototype 和 __proto__ 都是对象上的一个属性; 也就是说 , 非常规的情况, 是可以手动修改 prototype 和 __proto__ 为任何值的.为什么需要 prototype ?就像工厂需要通过对原材料经...原创 2018-06-05 16:41:15 · 186 阅读 · 0 评论 -
javascript 应用之 - 防抖节流
防抖什么是防抖? 为什么要防抖?频繁触发 , 只在停下来 n 秒之内无触发后 , 才执行相关操作 ; 因为有些复杂的操作, 如操作DOM , 频繁的触发很影响性能, 可能会把浏览器卡住.核心维护一个定时器, 也就是说对用户的操作 , 做延迟执行每次触发都先清除 1 中的定时器, 不管执行了与否 .简单实现function debounce(func, waitTim...原创 2018-06-04 22:19:18 · 147 阅读 · 0 评论 -
javascript 进阶之 - Promise
引言promise 主要解决了回调地域, 也就是嵌套太深的 callback, 而采用链式方式. 如:// 普通方式$.get({ url:'url', success:function(){ $.get({ url:'url2', success:function(){ ...原创 2018-06-03 18:58:19 · 369 阅读 · 0 评论 -
javascript 进阶之 - 事件循环
引言js 引擎是单线程, 所以同一个时间只能做一件事.js 的执行顺序核心是队列 , 而执行的核心是执行栈. 总是从事件队列取事件执行.js 代码有同步执行代码和异步代码, 却并不是以一段代码要执行的时间做区分.解析到 <script> 标签 , 或者成功加载一个脚本文件, 是在事件队列中添加了一个事件.粗略流程模拟浏览器开启 -> js 引擎开启 -&gt...原创 2018-06-03 17:17:37 · 400 阅读 · 0 评论 -
Nodejs 开发命令行工具
准备工作安装 NodejsNodejs 官网下载起步新建一个目录,作为命令行工具源码目录。mkdir webflow-cli初始化 package.json 文件npm init --yes进入命令行工具源码目录(webflow-cli),并且新建 bin 文件夹,并创建主程序,wflow.jscd webflow-climkdir bi...原创 2018-08-06 21:15:57 · 4363 阅读 · 0 评论