高级编程技巧
文章平均质量分 77
柒青衿
前端
展开
-
JavaScript-bind()与函数绑定
bind()与函数绑定函数绑定是可以优化JS性能的一种高级技巧。说到函数绑定,就必然提高bind()函数。首先看下官网对于bind()的介绍:bind方法会创建一个新函数,称为绑定函数.当调用这个绑定函数时,绑定函数会以创建它时传入bind方法的第一个参数作为this,传入bind方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数.使用bin原创 2016-02-20 21:01:10 · 3122 阅读 · 0 评论 -
JavaScript-读 You Dont Know JS, Object到底是什么
这篇博客是读You Dont Know JS系列书中this & Object Prototypes这本书后总结的第二篇博客(第一篇讲this到底是什么)。 这篇博客讲对象,其中会涉及到一些让我们困惑已久的问题,比如:对象的数据属性和访问器属性,对象属性(property)的特性(attribute)。原创 2017-05-10 11:12:05 · 1085 阅读 · 0 评论 -
JavaScript-读 You Dont Know JS,this到底是什么
You Dont Know JS一系列书不错。这一系列博客是我读这本书以后总结的干货。这篇博客讲解为什么使用this,以及如何确定一次函数调用的this到底是哪个对象。原创 2017-05-05 17:21:45 · 3629 阅读 · 0 评论 -
JavaScript-性能优化,函数节流(throttle)与函数去抖(debounce)
我在写一个类似百度搜索框的自动提示功能时候,使用了AJAX+keydown事件。调试时候我发现,当在搜索框中输入文字的时候,控制台在不停发送AJAX。这在本地服务器测试还好,如果我把它拿到运行环境,很可能出现提示功能卡顿,甚至没等提示出现用户就输入完毕的现象。毕竟大家现在打字都很快啊。于是我找到了一个新技能,函数节流 & 函数去抖。 throttle 和 debounce 是解决请求和响应速度不匹原创 2016-06-04 14:34:18 · 7006 阅读 · 3 评论 -
JavaScript-可维护代码编写,函数式编程与纯函数
JavaScript-可维护代码编写,函数式编程与纯函数JavaScript是函数式编程与面向对象编程的混合编程语言,加上本身一些可扩展性(比如:函数参数个数及类型的不确定),使得JavaScript非常灵活,当然也可以说非常不可控。正是这个特点,使得一个团队维护一个共同的前端项目时,JavaScript代码可能非常难以读懂。试想,你新加入一个团队,让你去读别人的代码本身就不太容易,如果团队的注释习原创 2016-05-26 21:02:59 · 2496 阅读 · 0 评论 -
JavaScript-观察者模式(publish/subscribe)
JavaScript-观察者模式(publish/subscribe)观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象。它是由两类对象组成,主题和观察者,主题负责发布事件,同时观察者通过订阅这些事件来观察该主体,发布者和订阅者是完全解耦的,彼此不知道对方的存在,两者仅仅共享一个自定义事件的名称。 在N原创 2016-05-08 14:27:38 · 18817 阅读 · 2 评论 -
JavaScript-装饰器函数(Decorator)
JavaScript-装饰器函数(Decorator)用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加灵活,首先,我们可以动态给对象选定某个装饰器,而不用hardcore继承对象来实现某个功能点。其次:继承的方式可能会导致子类繁多,仅仅为了增加某一个单一的功能点,显得有些多余了。 下面给出几个常用的装饰器函数示例,相关代码请查看github1原创 2016-05-08 11:07:57 · 14567 阅读 · 0 评论 -
JavaScript-函数柯里化
JavaScript-函数柯里化 柯里化是这样的一个转换过程,把接受多个参数的函数变换成接受一个单一参数(译注:最初函数的第一个参数)的函数,如果其他的参数是必要的,返回接受余下的参数且返回结果的新函数。也就是说是固定部分参数,返回一个接受剩余参数的函数,也称为部分计算函数,目的是为了缩小适用范围,创建一个针对性更强的函数。 例如,我想创建一个做自我介绍的函数,每个人只要输入自己姓名、性别、原创 2016-05-07 21:26:49 · 2476 阅读 · 0 评论 -
HTML5-Web Workers实现多线程
HTML5-Web Workers实现多线程当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。虽然在JavaScript中有setInterval和setTimeout函数使javaScript看起来好像使多线程执行,单实际上JavaScript使单线程的,一次只能做一件事情。 可以运行以下示例,检验js的单线程特性。 相关代码请到github查看。 <div原创 2016-05-06 13:23:17 · 4478 阅读 · 0 评论 -
JavaScript-Javascript中bind()方法的使用与实现
Javascript中bind()方法的使用与实现原文链接:http://blog.liuwanlin.info/javascriptzhong-bindfang-fa-de-shi-xian/原文作者:superlin在讨论bind()方法之前我们先来看一道题目:var altwrite = document.write; altwrite("hello"); /转载 2016-02-20 21:14:14 · 864 阅读 · 0 评论 -
JavaScript-JS优化与惰性载入函数
惰性载入函数由于现在浏览器之间的差异,为了实现跨浏览器工作,很多函数要书写大量if语句或者try…catch…语句。当每次调用函数时,都要对每个if分支或try语句进行检查,这样会使得浏览器反应变慢。实际上,当我们用某个浏览器打开网页时,就决定了某个if分支或try语句是可用的,没有必要每次调用都检查。为了解决以上问题,JavaScript中出现一种名为惰性载入的技巧。惰性载入表示函数原创 2016-02-20 19:29:16 · 1676 阅读 · 0 评论 -
JavaScript-读 You Dont Know JS,原型继承不是继承
这篇博客是读You Dont Know JS系列书中this & Object Prototypes这本书后总结的第三篇博客,也是最后一篇(第一篇讲this到底是什么,第二篇讲Object到底是什么)。本篇博客中涉及到原型继承的链式结构、prototype与__proto__(也就是[[prototype]])区别等问题。原创 2017-05-10 16:25:02 · 887 阅读 · 0 评论