Function模式 -- 深入理解javascript
/*
一、回调函数
函数A作为另外一个函数B的参数
*/
var menuId = $("ul.nav").first().attr("id");
var request = $.ajax({
url: "script.php",
type: "POST",
data: { id: menuId },
dataType: "html"
});
//调用成功时的回调处理
request.done(function (msg) {
$("#log").html(msg);
});
//调用失败时的回调处理
request.fail(function (jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
/*
二、配置对象模式
如果一个函数的参数只有一个参数,且参数为对象
*/
addPerson({
username: "shichuan",
first: "Chuan",
last: "Shi"});
/*
三、返回函数
一个函数的返回值为另外一个函数,或者根据特定的条件灵活创建的新函数
*/
var setup = function () {
console.log(1);
return function () {
console.log(2);
}
}
var my = new setup();//
my();//
//或者
setup()();//1//2 //利用闭包的特性,记录私有静态属性
var myFunc = function () {
var count = 0;
return function () {
return ++count;
}
}
var myObj = new myFunc();
myObj();
myObj();
/*
四、偏应用
参数的传入工作分开进行
*/
/*
五、Currying
将多个参数的处理转化成单个参数的处理,类似链式调用
*/
function add(x, y) {
var a = x, b = y;
if (typeof b ==="undefined") {
return function (newY) {
return a + newY;
}
}
return x + y;
}
var add2000 = add(2000);
add2000(10); //
/*
六、立即执行的函数
*/
(function () {
//声明函数后,立即执行函数
}());
//以下4项:都是立即执行函数
!function () { }();
-function () { }();
+function () { }();
~function () { }();
/*
七、立即执行的刚创建对象里的函数
*/
({
name: "123",
init: function () { }
}).init();
/*
八、分支初始化
根据不同的条件(场景)初始化不同的代码,也就是所谓的条件语句赋值
*/
/*
九、自声明函数
一般是在函数内部,重写同名函数代码
*/
/*
十、内存优化
该模式主要是利用函数的属性特性来避免大量的重复计算
*/
var myFunc = function (param) {
if (!myFunc.cache[param]) {
var result = {};
// ... 复杂操作 ...
myFunc.cache[param] = result;
}
return myFunc.cache[param];
}; // cache 存储
myFunc.cache = {};
Function模式 -- 深入理解javascript的更多相关文章
- 深入理解JavaScript系列
转自http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 深入理解JavaScript系列(1):编写高质量JavaScript代码 ...
- 深入理解JavaScript系列(转自汤姆大叔)
深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解JavaScript系列(1):编写高质量JavaScript ...
- [转]深入理解JavaScript系列
文章转自:汤姆大叔-深入理解JavaScript系列文章 深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解Ja ...
- [转载]深入理解JavaScript系列 --汤姆大叔
深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解JavaScript系列(1):编写高质量JavaScript ...
- 深入理解JavaScript系列(转载)
深入理解JavaScript系列 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaSc ...
- 深入理解JavaScript系列(50):Function模式(下篇)
介绍 本篇我们介绍的一些模式称为初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已经提到过,这里只是做一下总结. 立即执行的函数 在本系列第4篇的<立即调用的函数表达式> ...
- 深入理解JavaScript系列(49):Function模式(上篇)
介绍 本篇主要是介绍Function方面使用的一些技巧(上篇),利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:回调模式.配置对象.返回函数.分布程序.柯里化(Currying) ...
- 深入理解JavaScript中创建对象模式的演变(原型)
深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...
- (转)深入理解JavaScript 模块模式
深入理解JavaScript 模块模式 (原文)http://www.cnblogs.com/starweb/archive/2013/02/17/2914023.html 英文:http://www ...
随机推荐
- 前端开发之-------------合理利用CSS的权重----------------
什么是CSS的权重?对于前端工程师来说,这是一个很基础的问题,如果前端工程师没有深刻理解这个概念,则很难写出高质量的CSS代码. 那么到底什么是CSS的权重呢?我们又怎么来进行判定CSS的权重呢? 讨 ...
- ASP.NET MVC5 第4章
参考资料<ASP.NET MVC5 高级编程>第5版 第4章 模型 本章所探讨的模型是要显示.保存.创建.更新和删除的对象. 基架指使用 MVC 提供的工具为每个模型对象的标准索引构建.创 ...
- excel上传和下载
需要注意的地方: 1.js构造表单并提交 2.js中文传参encodeURI(encodeURI("中文")),action接收并转换value = URLDecoder.deco ...
- ElasticSearch 模板文件配置
首先是推荐一下参考资料 中文资料:http://kibana.logstash.es/content/elasticsearch/index.html 官方文档:https://www.elastic ...
- Android之Selector、Shape介绍
------------整理自网络---------------------- <?xml version=”1.0″ encoding=”utf-8″?> <shape xmlns ...
- Hive启动时的棘手问题的处理
Hive是存在于Hadoop集群之上的数据仓库,作为大数据处理时的主要工具,对于大数据开发人员的重要性不言而喻.当然要使用Hive仓库的前提就是对于hive的安装,hive的安装是很简单的过程,主要关 ...
- 谈谈final、finally、finalize的区别
1.final:如果一个类被final修饰,意味着该类不能派生出新的子类,不能作为父类被继承.因此一个类不能被声明为abstract,又被声明为final.将变量或方法声明为final.可以保证他们在 ...
- MHA 日常管理
一.MHA的主要脚本 1.manager端 masterha_check_ssh 检查MHA的SSH配置状况 masterha_check_repl 检查MySQL复制状况 masterha_mang ...
- 问题记录:android.os.NetworkOnMainThreadException异常
在MainActivity的主线程中访问网络将会发生异常 查阅资料后发现 Android4.0 以后不允许在主线程进行网络连接
- cygwin
setup-x86_64 -q -P wget,tar,qawk,bzip2,subversion,vim wget rawgit.com/transcode-open/apt-cyg/master/ ...