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 ...
随机推荐
- [原]sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛
本文出自:http://blog.csdn.net/svitter 原题:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&am ...
- python yield用法举例说明
1 yield基本用法 典型的例子: 斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到.1 2 3 5 8…… def fab(ma ...
- JavaScript入门基础
JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...
- Miniprofiler在普通net项目中的使用
1.Global.asax中配置 Void Application_BeginRequest(Object sender, EventArgs e){ If(Request.IsLocal){ //请 ...
- POI中设置Excel单元格格式样式(居中,字体,边框等)
创建sheet什么的就不多说了,直接进入正题 HSSFCellStyle cellStyle = wb.createCellStyle(); 一.设置背景色: cellStyle.setFillF ...
- MYSQL查询某字段中以逗号分隔的字符串的方法
首先我们建立一张带有逗号分隔的字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCH ...
- js8月-4号,,思想
1.js使用观察者模式,做异步编程.面向事件编程. 2.事件执行 (1)用户触发事件(2)定时执行 作业:选项卡,导航栏.
- SHOW SLAVE STATUS几个常见参数
--显示当前读取的Master节点二进制日志文件和文件位置,对应线程I/O thread Master_Log_File: mysql-bin.000011 Read_Master_Log_Pos: ...
- Python之路-(三级菜单)
data = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youk ...
- Red Gate Software 软件推荐
这家公司的Wiki http://en.wikipedia.org/wiki/Redgate http://www.red-gate.com/products/ 好吧 就介绍点免费的 Find SQL ...