- 博客(36)
- 收藏
- 关注
转载 前端进击的巨人(八):浅谈函数防抖与节流
本篇课题,或许早已是烂大街的解读文章。不过春招系列面试下来,不少伙伴们还是似懂非懂地栽倒在(~面试官~)深意的笑容之下,权当温故知新。JavaScript的执行过程,是基于栈来进行的。复杂的程序代码被封装到函数中,程序执行时,函数不断被推入执行栈中。所以 "执行栈" 也称 "函数执行栈"。函数中封装的代码块,一般都有相对复杂的逻辑处理(计算/判断),例如函数中可能会涉及到 DOM ...
2019-03-04 18:16:00 193
转载 前端进击的巨人(七):走进面向对象,原型与原型链,继承方式
"面向对象" 是以 "对象" 为中心的编程思想,它的思维方式是构造。"面向对象" 编程的三大特点:"封装、继承、多态”:封装:属性方法的抽象继承:一个类继承(复制)另一个类的属性/方法多态:方法(接口)重写"面向对象" 编程的核心,离不开 "类" 的概念。简单地理解下 "类",它是一种抽象方法。通过 "类" 的方式,可以创建出多个具有相同属性和方法的对象。但是!但是!但...
2019-02-18 21:41:00 157
转载 前端进击的巨人(六):知否知否,须知this
常见this的误解指向函数自身(源于this英文意思的误解)指向函数的词法作用域(部分情况)this的应用环境1. 全局环境无论是否在严格模式下,全局执行环境中(任何函数体外部)this都指向全局对象var name = '以乐之名';this.name; // 以乐之名2. 函数(运行内)环境函数内部,this的值取决于函数被调用的方式(被谁调用)var n...
2019-01-29 18:06:00 135
转载 前端进击的巨人(五):学会函数柯里化(curry)
柯里化(Curring, 以逻辑学家Haskell Curry命名)写在开头柯里化理解的基础来源于我们前几篇文章构建的知识,如果还未能掌握闭包,建议回阅前文。代码例子会用到 apply/call ,一般用来实现对象冒充,例如字符串冒充数组对象,让字符串拥有数组的方法。待对象讲解篇会细分解析。在此先了解,两者功能相同,区别在于参数传递方式的不同, apply 参数以数组方式传递...
2019-01-29 18:05:00 148
转载 前端进击的巨人(四):略知函数式编程
系列更文前三篇文章,围绕了一个重要的知识点:"函数"。函数调用栈、函数执行上下文、函数作用域到闭包。可见不理解函数式编程,代码都撸不好。函数是一等公民函数与其它数据类型一样,可以作为值赋给变量,作为参数传递或返回值返回,也可以像对象一样给函数创建属性(不推荐给函数加属性,虽然可用)。函数在实际开发中应用:函数声明函数表达式匿名函数自执行函数// 函数声明fun...
2019-01-29 18:03:00 146
转载 前端进击的巨人(三):从作用域走进闭包
进击的巨人第三篇,本篇就作用域、作用域链、闭包等知识点,一一击破。作用域作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符(变量)的访问权限——《你不知道的JavaScript上卷》作用域有点像圈地盘,大家划好区域,然后各自经营管理,井水不犯河水。var globaValue = '我是全局作用域';...
2019-01-19 11:47:00 156
转载 前端进击的巨人(二):栈、堆、队列、内存空间
面试经常遇到的深浅拷贝,事件轮询,函数调用栈,闭包等容易出错的题目,究其原因,都是跟JavaScript基础知识不牢固有关,下层地基没打好,上层就是豆腐渣工程,新人小白,踏实踩土才是关键。打地基第二篇:本篇我们将对JavaScript数据结构的知识点详解一二。JavaScript中有三种数据结构: 栈(stack) 、堆(heap)、 队列(queue)。栈(stack)栈的特...
2019-01-19 11:46:00 167
转载 前端进击的巨人(一):执行上下文与执行栈,变量对象
写在开篇已经不敢自称前端小白,曾经吹过的牛逼总要一点点去实现。正如前领导说的,自己喝酒吹过的牛皮,跪着都得含着泪去实现。那么没有年终完美总结,来个新年莽撞开始可好。进击巨人系列开篇,不忘初心,砥砺前行。理解执行上下文执行上下文(Execution Context): 函数执行前进行的准备工作(也称执行上下文环境)运行JavaScript代码时,当代码执行进入一个环境...
2019-01-14 21:31:00 123
转载 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章。对此,笔者换了随机阅读的方式,哪章感兴趣了或者想补知识点,再去翻阅对应的章节。当然目录还是要翻的。工作生活节奏太快,知识太多,时间与知识的增长成反比,求全不如求专,也许不能看完全书,但至少掌握所需知识点...
2018-12-26 16:48:00 102
转载 Vim 利剑常磨,见血封喉
年底了,故事总是会有很多。刚了一波通宵加班,趁着有时间,过了一遍Vim教程,顺便汇总下常用命令。对于以 OSX / Linux为开发环境的伙伴们,应该并不陌生。因其轻便,扩展性,可定制化,一直很受开发者追捧。高阶大神,袖中必有深藏。Vim编辑器简洁易用,在终端上可用来快速查看修改文档。虽然与其他编辑器如WebStrom, VScode相比,功能扩展相对欠缺,对新手朋友不太友好。但...
2018-12-25 09:05:00 117
转载 读书笔记(05) - 事件 - JavaScript高级程序设计
HTML依托于JavaScript来实现用户与WEB网页之间的动态交互,接收用户操作并做出相应的反馈,而事件在此间则充当桥梁的重要角色。日常开发中,经常会为某个元素绑定一个事件,编写相应的业务逻辑,在元素被点击时执行,并反馈到用户操作界面。这个过程中,事件就像一个侦听器,当点击动作发生时,才会执行对应的程序。这种模式可称之为观察员模式。接下来就讲讲DOM事件相关知识。何为事件...
2018-12-10 10:24:00 92
转载 读书笔记(04) - 错误监控 - JavaScript高级程序设计
错误类型即时运行错误 (代码错误)资源加载错误常见的错误1. 类型转换错误建议使用全等===操作符2.数据类型错误建议加强类型判断// 数组倒序function reverseSort(value) { if (value instanceof Array) { // 使用instanceof验证数据类型 // (基础类...
2018-12-06 12:04:00 109
转载 读书笔记(03) - 性能 - JavaScript高级程序设计
作用域链查找作用域链的查找是逐层向上查找。查找的层次越多,速度越慢。随着硬件性能的提升和浏览器引擎的优化,这个慢我们基本可以忽略。除了层级查找损耗的问题,变量的修改应只在局部环境进行,尽量避免在局部环境下去操作修改父级变量的值。(react/vue 单向数据流的数据传输方式)优化方法:声明一个变量存储引用(该方法应用甚多)不必要的属性查找// 未优化(window.locat...
2018-12-04 08:46:00 68
转载 读书笔记(02) - 可维护性 - JavaScript高级程序设计
编写可维护性代码可维护的代码遵循原则:可理解性 (方便他人理解)直观性 (一眼明了)可适应性 (数据变化无需重写方法)可扩展性 (应对未来需求扩展,要求较高)可调试性 (错误处理方便定位)命名方式变量取名多为为名词,方法取名多为为动词// 变量名car, person;// 方法名getName, isEnable;解耦功能过于依赖,代码耦合过紧,不利...
2018-12-03 15:04:00 94
转载 读书笔记(01) - JSON - JavaScript高级程序设计
JSON与JavaScript对象JSON是一种表示结构化数据的存储格式,语法格式上与JavasScript对象有些类似。TIPS: 与JavaScript对象的格式区别不支持变量、函数或对象实例字符串,属性名必须使用双引号无需定义变量存储引用// JSON对象{ "name": "KenTsang", "age": 27, "job": "D...
2018-12-02 14:30:00 72
转载 杂谈:HTTP1.1 与 HTTP2.0 知多少?
HTTP是应用层协议,是基于TCP底层协议而来。TCP的机制限定,每建立一个连接需要3次握手,断开连接则需要4次挥手。HTTP协议采用“请求-应答”模式,HTTP1.0下,HTTP1.1非Keep-Alive模式下,每个请求都要新建一个连接,完成之后立即断开连接。如果有新的请求,则要重新创建请求连接(HTTP协议为无连接的协议)。这样不免造成了网络传输数据一定的延迟,1999年推出...
2018-08-04 11:58:00 65
转载 JS 中 if / if...else...替换方式
说说烂大街的if/if...else...,程序中用得最多的流程判断语句。对着曾经满屏的if/if...else...,心想能不能搞点事情,折腾点浪花浪里呀浪。对顶着“这个需求很简单,怎么实现我不管,明天上线”的程序猿,答案必须YES。"Write Less, Do More",学习进步的本质就是为了更有效率地偷懒。废话说完,直接上方法汇总,让我们来一窥究竟:switch改写...
2018-07-15 10:20:00 476
转载 一道JS面试题引发的血案
刚入职新公司,属于公司萌新一枚,一天下午对着屏幕看代码架构时。BI项目组长给我看了一道面试别人的JS面试题。虽然答对了,但把理由说错了,照样不及格。话不多说,直接上题:var a = 1;switch (a) { case 2: console.log(2) break; case 1, 2, 3: // 这里case是对比几呢? ...
2018-04-09 13:46:00 139
转载 杂谈:渐进增强与优雅降级
作为一名前端开发人员,最头疼的莫过于浏览器兼容。远古时期万恶的IE6,到现在CSS3不兼容的IE7/8.为了保证不同版本浏览器都有共同或更优化的用户体验,前端搬砖的我们不得不与浏览器兼容顽强斗争。而渐进增强和优雅降级两种不同的开发流程,也是在我们项目初期做调研选型时会考虑的一个点。渐进增强(Progressive Enhancement)一开始就针对低版本浏览器进行构建页面,完成基...
2018-03-22 20:24:00 85
转载 Mac终端配置,DIY你的Terminal (iTerm 2 + Oh My Zsh)
使用mac osx一年以来,自带的Terminal终端一直都是白底黑字,食之无味,越来越缺乏新鲜感,怎么也得想个法子来刺激下眼球。不然花那么多大洋买你回来是要哪般,难道真是为来学习工作???怎么可能,不装逼谁TM买苹果。。。好吧,其实为来工作学习,装逼纯属业余。完成配置后的终端具备功能:语法高亮命令行tab补全自动提示符显示Git仓库状态等功能⌘+r 快速清空代码面板...
2018-01-10 16:44:00 232
转载 微信小程序爬坑日记
新公司上手小程序。30天,从入门到现在,还没放弃。。。虽然小程序发布出来快一年了,爬坑的兄弟们大多把坑都踩平了。而我一直停留在“Hello World”的学习阶段。一来没项目,只有项目才是实践学习的根本;二来刚出来,总是有很多坑。爬坑总是痛并快乐着。再多的借口,产品项目需求拍在桌前,都得缴械投降。不要怂撸起袖子,就是干。初识小程序微信推出小程序,想要实现即开即...
2017-12-08 10:33:00 114
转载 浏览器拦截js打开新窗口
最近做项目时,遇到的问题“想通过javascript在浏览器新标签页或新窗口打开一个新的页面,结果被浏览器大大无情给拦截了”业务需求:前端提交数据到后端,后端返回url,然后在新窗口打开该url。(前后端数据请求使用异步请求的方式)自己常用的两种打开新窗口的方式window.open()用a标签的target="_blank"在模板中插入一个a标签,然后javascr...
2017-10-09 11:59:00 246
转载 npm常用命令整理
npm是一个NodeJS包管理跟分发工具,已经成为了非官方的发布node模块(包)的标准。它可以帮助我们解决代码部署上的一些问题,将开发者从繁琐的包管理工作中(版本、依赖等)解放出来,更加专注于功能上的开发,大大提升我们的工作效率。以下为日常应用中收集整理的npm常用命令:初始化 引导你创建一个package.json文件npm init查看package....
2017-10-04 10:20:00 130
转载 Axios 执行post发送两次请求的小坑
vue-resource2.0已经不再更新,所以vue2.0官方推荐使用axios来代替。实际项目也是应用上了vue+axios,然后就有了这么一段填坑的经历。问题:axios使用post请求时,发送了两次,而get则正常。第一次请求不是正确的post请求,第二次才是正确的调出谷歌开发者工具image.png“Request ...
2017-09-25 15:11:00 552
转载 URL, URI, URN三者区别
URL和URN都是URI的子集URL和URN都是URI,但是URI不一定是URL或者URNURI,URL,URN关系图关于URL:URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置关于URN:URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以...
2017-09-18 09:27:00 143
转载 VSCode 同步设置及扩展插件 实现设备上设置统一
准备工作:电脑上需安装VSCode,拥有一个github账户。实现同步的功能主要依赖于VSCode插件 "Settings Sync"Setting Sync 可同步包含的所有扩展和完整的用户文件夹1) 设置文件2) 快捷键设置文件3) Launch File4) Snippets Folder5) VSCode 扩展设置6) 工作空间Sett...
2017-08-23 16:34:00 141
转载 Webstorm 快捷键大全 整理收录
"工欲善其事,必先利其器"作为一名开发人员,好用的工具能让你效率更高,剩下的时间用来偷懒吹牛逼吧。。。以下整理Webstorm快捷键大全Windows版本注释(//或者/*…*/)Ctrl + / 或 Ctrl + Shift + /重命名Shift + F6重新开始一行 (无论光标在哪个位置)Shi...
2017-08-21 16:00:00 100
转载 Javascript-数值运算 保留小数点位数,并对最后一位小数各种取整方法
今天遇到Javascript数值运算的坑,说到底,还是用得少啊。得多用多敲代码多遇坑。先介绍以下三个Javascript number取整运算方法.Math.floor() 对一个数退一取整例:10.5 -> 10Math.ceil()对一个数进一取整例:10.5 -> 11Math.round()...
2017-07-13 21:27:00 701
转载 jQuery开发自定义插件 $.extend()与$.fn.extend()
jQueryextend()和jQuery.fn.extend()jQuery提供两个用于封装扩展的方法:1.$.extend(); 扩展jQuery类方法,即jQuery全局方法 (在全局可直接调用,如$.myFun(); myFun为自定义的方法)2.$.fn.extend();扩展jQuery实例的成员方法 (如用来扩展一个input框的方法,$.fn = $.pro...
2017-06-13 16:01:00 230
转载 toastr 通知提示插件
jquery toastr 一款轻量级的通知提示框插件。网页开发中经常会用到提示框,自带的alert样式无法调整,用户体验差。所以一般通过自定义提示框来实现弹窗提示信息,而jquery toastr正是为此的一款非常棒的插件。开发中用angular比较多,所以笔记记录了angular一些常见使用,与jquery版本有些许不同,相差不大。在HTML引用js...
2017-06-11 08:50:00 239
转载 HTTP中GET与POST的区别
GET和POST,在我们日常WEB开发中,是最常用的数据传输方式。面试基础题也是经常会见到。一般我们在浏览器输入一个网址URL访问网站都是GET方式请求;在HTML FROM表单中,可以通过设置method指定提交方式为GET或者POST提交方式,默认为GET提交方式。HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEA...
2017-06-02 22:20:00 119
转载 AngularJS 拦截器实现全局$http请求loading效果
日常项目开发中,当前端需要和后端进行数据交互时,为了友好的UI效果,一般都会在前端加个loading的状态提示(包括进度条或者icon显示),数据传输或交互完成之后,再隐藏/删除loading提示。一般简单的做法就是在每个请求的业务逻辑前添加/显示loading,交互完成再删除/隐藏loading。但是这样代码重复度高,每个请求的地方都需要编写一遍,比较繁琐。对开发人员来说,wr...
2017-05-15 21:58:00 456
转载 AngularJS ng-repeat使用及注意事项
用法:ng-repeat="extension";extension(表达式)定义了如何循环集合。表达式实例规则:1. x in records2. (key,value) in myObj3. x in records track by $id(x)我们可以使用ng-repeat指令遍历一个JavaScript数组,当数组中有重复元素的时候,Angula...
2017-05-11 21:41:00 127
转载 angular指令监听ng-repeat渲染完成后执行自定义事件方法
今天工作中遇到需要用到ng-repeat遍历渲染完后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己创建自定义指令。在ng-repeat模板实例内部会暴露出一些特殊属性$index/$first/$middle/$last/$odd/$even,$index会随着每次遍历(从0开始)递增,当遍历到最后一个时,$last的值为true,所以可...
2017-05-11 21:18:00 262
转载 icheck如何修改样式大小
icheck默认样式比较大,有需求调整checkbox大小。1. 最简单的方法可用css3来实现,让整个模块层缩放,不兼容低版本浏览器。transform:scale(0.7,0.7)2. 为了更好的兼容,最好的解决方案:修改icheck本身默认样式的 width / height 来实现,虽然宽高改变了,但是背景图片大小依旧,所以多了一步步骤,...
2017-05-09 09:14:00 447
转载 Sublime text3 代码格式化插件
使用 Sublime text 3 格式化HTML代码,需要安装插件,具体安装步骤如下:1. 打开菜单 -> 首选项(Perferences) -> 插件控制(Packpage Control),输入"Install Package"2. 等待程序进入插件管理功能,再输入插件名称:"TAG" / "HTML-CSS-JS"3. 点击安装插件 1"HTML-CSS-...
2017-05-08 21:01:00 257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人