web学习—javascript学习—函数(三)
来源:互联网 发布:程序员修炼之道 怎么样 编辑:程序博客网 时间:2024/06/06 01:00
模块:
一个提供接口却隐藏状态与实现的函数或对象。利用模块其实可以完全来屏蔽对全局对象的使用。下面有个比较经典的例子:
String.method('deentityify',function(){
var entity = {
quot: '"',
lt: '<',
gt:'>'
};
return function(){
return this.replace(/&([^&;]+);/g,function(){
var r = entity[b];
return typeof r==='string'?r:a;
});
};
}();)
注意最后一行的(),这个实际的给string添加的函数是return的函数。
这样就可以很好的利用模块来,保护好entity变量。
级联
有些方法没有返回值,如果由于某些原因不想让他返回undifined而是返回this,就可一利用级联了。
getElement('myDiv').move(350,150).width(100).height(100)...;
套用:
套用允许我们将函数与传递给他的参数相结合产生一个新的函数
function.method('curry',function(){
var slice = Array.prototype.slice,
args = slice.apply(arguments),
that = this;
return function (){
return that.apply(null,args.concat(slice.apply(arguments)));
};
});
var add1 = add.curry(1);
document.writlen(add1(6));
记忆:
函数借助对象来记住先前在函数中所计算的结果。
var fibonacci = function(){
var nemo = [0,1];
var fib = function(n){
var result = memo[n];
if(typeof result != 'number'){
result = fib(n - 1)+fib(n - 2);
memo[n] = result;
}
return result;
};
}();
一个提供接口却隐藏状态与实现的函数或对象。利用模块其实可以完全来屏蔽对全局对象的使用。下面有个比较经典的例子:
String.method('deentityify',function(){
var entity = {
quot: '"',
lt: '<',
gt:'>'
};
return function(){
return this.replace(/&([^&;]+);/g,function(){
var r = entity[b];
return typeof r==='string'?r:a;
});
};
}();)
注意最后一行的(),这个实际的给string添加的函数是return的函数。
这样就可以很好的利用模块来,保护好entity变量。
级联
有些方法没有返回值,如果由于某些原因不想让他返回undifined而是返回this,就可一利用级联了。
getElement('myDiv').move(350,150).width(100).height(100)...;
套用:
套用允许我们将函数与传递给他的参数相结合产生一个新的函数
function.method('curry',function(){
var slice = Array.prototype.slice,
args = slice.apply(arguments),
that = this;
return function (){
return that.apply(null,args.concat(slice.apply(arguments)));
};
});
var add1 = add.curry(1);
document.writlen(add1(6));
记忆:
函数借助对象来记住先前在函数中所计算的结果。
var fibonacci = function(){
var nemo = [0,1];
var fib = function(n){
var result = memo[n];
if(typeof result != 'number'){
result = fib(n - 1)+fib(n - 2);
memo[n] = result;
}
return result;
};
}();
这个函数中,memo就是一个记忆对象。
对于这一篇,大部分是可以明白,但是在实际用时确实没怎么注意过。这个也许在以后写代码的多了就可遇到了吧。
暂且吧,几个例子放在这,便于以后理解使用。
- web学习—javascript学习—函数(三)
- web学习—javascript学习—函数(一)
- web学习—javascript学习—函数(二)
- JavaScript学习(三)-函数
- javascript学习(三) — 数组
- web学习—javascript学习—简介
- web学习—javascript学习—对象
- JavaScript学习(三)
- JavaScript学习(三)
- JavaScript学习(三)
- JavaScript学习(三)
- javascript学习——函数
- Javascript学习——函数
- javascript学习(十二)— 箭头函数
- javascript 学习三~函数和数组基础
- JavaScript学习总结(3)——JavaScript函数(function)
- JavaScript学习(三)——程序构成
- 学习javascript数据结构(三)——集合
- redis 源代码之数据结构(1)--链表的实现
- 杂谈--初到阜新。
- dojo.io.iframe VS dojo.request.iframe VS dojo form(Explorer Save As Prompt)
- Spring框架之Filter应用
- 用Java集合中的Collections.sort方法对list排序的两种方法
- web学习—javascript学习—函数(三)
- JS图片无缝滚动(方便使用)
- win7,ubuntu12.04亲测修复grub引导总结,步骤少,简单
- poj1325
- U盘做ubuntu安装盘之后,识别不到的解决方法
- PNG透明窗体全攻略(控件不透明)
- android里图片下载工具类AsyncImageLoader分析
- It’s here! The MIT licensed Torque 3D GitHub repo is ready!
- 发现一个有趣的现象:vc2010的工程的保存路径里不能有==