2016-10-12 曹强
闭包是js中一个难懂又必须征服的概念,他的形成与变量作用域以及变量的生存周期密切相关。 变量作用域和生存周期 作用域,按字面理解,就是指变量的有效范围,超出这个范围就无法访问。 在函数中,里面函数可以访问外面的变量,但是外面无法访问内部变量。举个简单例子: var a = 1; var fun1 = function() { var b = 2; var fun2 = function() { var c = 3; alert(b); //2 alert(c); //3 } fun2(); alert(c); //c is not de 继续阅读 »
2016-10-12 曹强
高阶函数是至少满足下列条件之一的函数 * 函数可以作为参数被传递 * 函数可以作为返回值输出 (js这么好的语言中的函数当然满足 ^^)_ 函数作为参数传递 把函数当作参数传递,可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数中,可以分离业务代码中变与不变的部分。 回调函数,ajax异步,callback var getUserInfo() = function(userId, callback) { $.ajax('http://xxx.com/getUserInfo?' + userId, function(data) { if (typeof(callback === ' 继续阅读 »
2016-10-12 曹强
虚拟代理实现图片预加载 图片预加载:图片过大或者网络不佳时,图片位置有段时间会是一片空白,常见的用一张loading占位,然后异步加载图片,等图片加载好了再把它填充到img节点里。 var myImage = (function() { var imgNode = document.createElement('img'); document.body.appendChild( imgNode ); return { setSrc : function( src ) { imgNode.src = src; } } })(); var pr 继续阅读 »
2016-01-30 Jason Liao
Currying and partial application are two ways of transforming a function into another function with a generally smaller arity. 继续阅读 »
2013-06-02 Klaus Ma
For the performance tuning, the simplest way is to record how many time is elapsed in a function. The only difficulty we’re facing is that: there maybe many exit for a function. Thanks to C++’s constructor/deconstructor feature, it’s easy for developer to record the elsaped time. 继续阅读 »
2017-02-21 Wenjie Yao
本文翻译自老马(Martin Fowler)的博客文章,该译文现已被博客原文收录在其下方中文翻译处。   在我的职业生涯期间,我曾听过很多关于一个方法(或者说函数,本文针对两者将不做区分)应当有多长的争论。这其实引申到另一个更加重要的问题上:我们应该在什么时候把代码封装在它自己的方法内?有些准则会基于方法的长度,比如方法的长度不应该超出屏幕可以容纳的范围❶。有些会基于复用,即任何被使用超过两次的代码都应该抽出自己单独的方法,而只在一个地方使用过的代码就应当保留在行内。然而,于我而言,最合乎情理的还是这种论点:那就是意图和实现的分离。如果你不得不费点精力查看一段代码,才能弄清楚它具体做了什么,那你就需要把它抽出成一个方法,并且用“它 继续阅读 »
2016-10-12 曹强
享元模式的核心是运用共享技术来有效支持大量细粒度的对象。如果系统中因为创建了大量类似的对象而导致内存占用过高,享元模式就非常有用了。在JavaScript中,浏览器特别是移动端的浏览器分配的内存不算多,如何节省内存就成了一件非常有意义的事。 初识 假设有个内衣工厂,要50个男模50个女模,你可能会这么写程序: var Model = function(sex, underwear) { this.sex = sex; this.underwear = underwear; } Model.prototype.takePhoto = function() { console.log('sex=' + th 继续阅读 »
2016-10-12 曹强
状态模式的关键是区分事物内部的状态,事物内部状态的改变往往会带来事物的行为改变。 电灯程序 首先给一个不用状态模式的电灯程序例子: var Light = function() { this.state = 'off'; //电灯初始状态off this.button = null; //电灯开关按钮 }; Light.prototype.init = function() { var button = document.createElement('button'), self = this; button.innerHTML = '开关'; this.button = document. 继续阅读 »
2016-07-16 ruki
xmake provides some api, which can detect whether exist some library functions. ```lua target("test") -- checks some libc functions from the header files: wchar.h and stdlib.h add_cfuncs("libc", nil, {"wchar.h", "stdlib.h"}, "wcscat", 继续阅读 »
2015-11-29 Oliver Wang
没什么好解释的,直接看代码吧。 js (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. //define(['jquery', 'underscore'], factory); } else if (typeof exports === 'object') { // Node/CommonJS style for Browserify/Seajs module.exports = 继续阅读 »