Javascript Memoization 缓存函数使用说明
var flower= function(){
var t=0,i=0;
for(;i<5000000;i++){
t++;
}
return t;
}
flower 返回t的值
假设这个函数需要花费 2-3秒 。
通过 Memoization 函数,再次查找相同的值时,直接获取事先缓存好的 value,立刻返回;
Memoization 函数
代码如下:
var Memoize = function(fn, cache, refetch, obj){
cache = cache || {};//用来缓存结果
return function(){
var k = arguments[1] ? Array.prototype.join.call(arguments, '__') : arguments[0];//多个参数则有'__'分隔开
if (!(k in cache) || (refetch && cache[k] == refetch)) { //如果不在缓存列表中,并且和给定的refetch值相等,重新去运算
cache[k] = fn.apply(obj || fn, arguments); //obj参数可用来改变this指针
}
return cache[k];//返回结果
}
}
Demo:
New Document
(function(){
var Memoize = function(fn, cache, refetch, obj){
cache = cache || {};
return function(){
var k = arguments[1] ? Array.prototype.join.call(arguments, '__') : arguments[0];
if( !(k in cache) && !(refetch && cache[k] == refetch)){
cache[k] = fn.apply(obj || fn, arguments);
}
return cache[k];
}
}
var test = function(){
var t=0,i=0;
for(;i
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
相关推荐
-
浅谈js数据类型判断与数组判断
写在开篇: 昨天面试发现一个十分非常简单的问题竟然没有回答上来,可能也确实是因为太紧张了,感觉被自己蠢哭了.后来想想还是应该认真记录一下,这样才能印象深刻.革命尚未成功,壮实仍需努力! 1. js六大数据类型 number:数字,整数.浮点数等等, string:单引号或者双引号来说明, Boolean:返回true和false,这两个值不一定对应1和0 object:对象,可以执行new操作符后跟要创建的对象类型的名称来创建. null:只有一个值得数据类型,逻辑上讲,null值表示一个空对象
-
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
1.数据类型:JavaScript定义的数据类型有字符串.数字.布尔.数组.对象.Null.Undefined,但typeof有区分可判别的数据分类是number.string.boolean.object(null / array).function和undefined.undefined 这个值表示变量不含有值,null 可以用来清空变量 let a = 100; typeof a;//number a = undefined; typeof a;//undefined a = null;
-
浅析JS中常用类型转换及运算符表达式
JS中的常用类型转换(一般用强制转换): 1.强制转为整数:parseInt:写法:x = parseInt(x); 2.强制转换位小为:parseFloat:写法:x = parseFloat(x); 3.检测类型:x = parseInt(x); alert(typeof(true)); JS中常用的运算符表达式: 1.逻辑运算符(布尔型):&& 并 :|| 或 :! 非 : 2.比较运算符:==(等于) :!=(不等于) : > :< :>=(大于等于)
-
JavaScript Memoization 让函数也有记忆功能
比如说,我们想要一个递归函数来计算 Fibonacci 数列.一个 Fibonacci 数字是之前两个 Fibonacci 数字之和.最前面的两个数字是 0 和 1. 复制代码 代码如下: var fibonacci = function (n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); }; for (var i = 0; i <= 10; i += 1) { document.writeln('// ' + i +
-
javascript开发技术大全-第3章 js数据类型
3.1 基本数据类型 1.字符串类型(string) :由unicode字符.数字.标点符号组成,在javascript中没有char字符类型 ,即使只表示一个字符,也必须用到字符串 2数字型(number):不区分整型和浮点型 3.布尔型(boolean) 3.2复合数据类型 1.数组(array):数组元素:放在数组中的数据称为数组元素. 数组下标:从0开始编号 读:arr[0]; 赋值:arr[1]=120; 2.对象: 对象名.属性名 对象名.方法名() 3.3其它有数据类型 函数: 1
-
详解JS数据类型的值拷贝函数(深拷贝)
废话不多说了,直接给大家贴代码了,具体代码如下所示: function mottoClone (obj) { if (obj === null || typeof obj !== 'object') return obj; if (obj instanceof Boolean) return new Boolean(obj.valueOf()); if (obj instanceof Number) return new Number(obj.valueOf()); if (obj instan
-
老生常谈js数据类型
js数据类型主要分为基本数据类型和引用数据类型 基本数据类型和引用数据类型的区别: 基本数据类型是对值得引用,引用数据类型是对地址的引用: 基本数据类型存放在栈内存,栈内存提供了供JS代码执行的环境,引用数据类型存放在对内存 基本数据类型包括: Array 数组 string 字符串 number 数字 beloon 布尔值 null undefined 引用数据类型包括: 对象数据类型 函数数据类型 对象数据类型又分为:数组[], 对象{}, 正则RegExp, 日期对象 对象数据类型存放在对
-
Javascript Memoization 缓存函数使用说明
举个例子 复制代码 代码如下: var flower= function(){ var t=0,i=0; for(;i<5000000;i++){ t++; } return t; } flower 返回t的值 假设这个函数需要花费 2-3秒 . 通过 Memoization 函数,再次查找相同的值时,直接获取事先缓存好的 value,立刻返回; Memoization 函数 复制代码 代码如下: var Memoize = function(fn, cache, refetch, obj){
-
javascript indexOf函数使用说明
使用方法:strObj.indexOf(str,startIndex[可选]) 程序代码 其中strObj是必选项.String 对象或文字. str是必选项.要在 String 对象中查找的子字符串. startIndex是可选项.该整数值指出在 String 对象内开始查找的位置,从0开始.如果省略,则从字符串的开始处查找. 注意:对于JavaScript的indexOf是区分大小写的. JavaScript中indexOf函数方法返回一个整数值,指出 String 对象内子字符串的开始位置
-
php header()函数使用说明
header()函数使用说明: 一.作用: ~~~~~~~~~ PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照http://www.w3.org/Protocols/rfc2616/rfc2616. 传统的标头一定包含下面三种标头之一,并只能出现一次. Location: xxxx:yyyy/zzzz Conte
-
PHP函数使用说明(补充)
PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助. 1.print_r() 打印关于变量的易于理解的信息,若为数组,则显示数组的结构信息. 例如: 复制代码 代码如下: <?php $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z')); print_r ($a); ?> axgle点评:查看任何数组的结构信息,是程序调试的必备工具.对于任何返回结果是数组的&quo
-
深入浅析javascript立即执行函数
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花; 当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function: function functionname() { 这里是要执行的代码 } 当调用该函数时,会执行函数内的代码. 可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript
-
javaScript中push函数用法实例分析
本文实例讲述了javaScript中push函数用法.分享给大家供大家参考.具体分析如下: javaScript 中的 push 方法,将新元素添加到一个数组中,并返回数组的新长度值. arrayObj.push([item1 [item2 [. . . [itemN ]]]]) 参数 arrayObj,必选项.一个 Array 对象. item, item2,. . . itemN, 可选项.该 Array 的新元素. 说明 push
-
枚举JavaScript对象的函数
From: JavaEye.com 枚举JavaScript对象的函数: function iterator(obj) { for (var property in obj) { document.writeln("<p>" + property + " : " + obj[property] + "</p>"); } } 一个简单示例(test.js): function Employee () { this.
-
JavaScript中exec函数用法实例分析
本文实例讲述了JavaScript中exec函数用法.分享给大家供大家参考.具体如下: javaScript 中的 exec 函数,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组. rgExp.exec(str) 参数: rgExp 必选项.包含正则表达式模式和可用标志的正则表达式对象. str 必选项.要在其中执行查找的 String 对象或字符串文字. 说明: 如果 exec 方法没有找到匹配,则它返回 null.如果它找到匹配,则 exec 方法返回一个数组,并
-
javascript中动态函数用法实例分析
本文实例讲述了javascript中动态函数用法.分享给大家供大家参考.具体分析如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>动态函数</title> <script
随机推荐
- Java打印和打印预览机制实例代码
- jQuery绑定事件-多种实现方式总结
- JS、CSS加载中的小问题探讨
- php简单图像创建入门实例
- Tomcat数据源配置方法_JBuilder中
- Android利用GridView实现单选功能
- Python实现字典的key和values的交换
- 深入linux下遍历目录树的方法总结分析
- Android编程之Button控件用法实例分析
- jQuery查询数据返回object和字符串影响原因是什么
- 在textarea输入Tab
- Js判断CSS文件加载完毕的具体实现
- ReactJs实现树形结构的数据显示的组件的示例
- C++实现CreatThread函数主线程与工作线程交互的方法
- C#类的创建与初始化实例解析
- 水印测试(重新测试)
- AndroidStudio Gradle第三依赖统一管理的实现方法
- Java中类加载过程全面解析
- python tensorflow学习之识别单张图片的实现的示例
- vue.js 使用axios实现下载功能的示例