JavaScript功能函数的底层实现
爬虫组的小前端
这个作者很懒,什么都没留下…
展开
-
实现JavaScript中的new运算符
在JavaScript中没有类的概念,常常通过new来克隆一个对象,例如new girlFriend(); 这里的girlFriend不是类,而是一个函数构造器,当使用new运算符来调用函数时,此时的函数就是一个构造器,置于new底层怎么实现的,就上代码吧。var newFactory = function(){ var obj = {}; // javasript中没有类所有的对象都是原创 2018-01-24 15:41:55 · 283 阅读 · 0 评论 -
实现JavaScript中的分时函数
在短时间中在页面中添加大量的dom节点让浏览器出现卡顿,解决的方案可以将1秒钟创建1000个节点,改为200ms创建8个节点,这样就实现了分时函数var timeChunk = function(arr, fn, count){//参数分别为传入的数据,执行的函数,每次执行的数量var obj;var t;var len = arr.length;var start = fun原创 2018-02-07 14:03:51 · 324 阅读 · 0 评论 -
实现JavaScript函数节流
为了避免函数被触发的频率太高,便用函数节流来实现控制触发频率var throttle = function(fn, interval){ var _self = fn;//保存需要运行的函数 var timer; //定时器 var firstTime = true;//用于判断是否第一次调用return function(){ var args = argume原创 2018-02-07 13:21:00 · 314 阅读 · 0 评论 -
实现JavaScript中uncurrying方法
Array.prototype的方法原本只能用来操作array对象,但用call和apply可以把任意对象当做this传入这个方法,从而实现泛化。Function.prototype.uncurrying = function(){ var self = this;//保留this指针return function(){ var obj = Array.prototype.sh原创 2018-02-04 13:37:08 · 194 阅读 · 0 评论 -
实现JavaScript中currying(函数柯里化)
currying:函数柯里化,俗称部分求值,一个curry函数首先接收一些参数,接收参数后,函数不会立即求值,而是继续返回一个函数,传入的参数在函数形成的闭包中保存,当真正需要求值时,之前的参数才会一次性用于求值。var currying = function(fn){ var args = [];//实现函数闭包,保存args的值 return function(){ if原创 2018-02-03 15:14:12 · 392 阅读 · 0 评论 -
实现JavaScript中isArray()函数
通常通过isArray()等函数来判别某对象是否属于某个属性,下面通过代码实现这个函数的封装var Type = {};for(var i=0, type; type=['String', 'Array', 'Number'][i]; i++){ (function(type){ Type['is' + type] = function(obj){ return Obj原创 2018-02-01 17:13:44 · 1920 阅读 · 0 评论 -
实现JavaScript中的bind函数
我们通常使用函数的bind方法来指定函数内部的this指向,下面就是bind函数的简单封装function.prototype.bind = function() var self = this; //保存原函数的this指针 var context = [].shift.call(arguments); //返回第一个将这个作为函数执行的this指针 var args = [原创 2018-02-01 15:51:09 · 445 阅读 · 0 评论