首页 > Web开发 > 详细

一些没啥卵用js功能函数的笔记

时间:2018-05-22 13:54:21      阅读:143      评论:0      收藏:0      [点我收藏+]
 1 //防抖 经过一定的延迟执行一次 接受一个函数 返回防抖的函数
 2 function debounce(fn,delay){
 3 
 4     var _args = Array.prototype.slice.call(arguments,2) //获取参入的参数
 5     var timer = null;
 6     return function(){
 7         var that = this //保存this对象 因为有些事件触发需要保存当前的对象
 8         var _secondArgs = [].concat(Array.prototype.slice.call(arguments),_args) //获取参入的参数
 9         clearTimeout(timer);
10         timer = setTimeout(function(){
11             fn.apply(that,_secondArgs)
12         },delay)    
13     }
14 }
15 
16 var test = document.getElementById(‘test‘)
17 var hello = ‘456‘
18 test.name = ‘123‘
19 var hh = throttle(function(){
20     console.log(this.name,hello)
21 },2000,hello)
22 
23 test.onclick = hh
24 
25 
26 //节流
27 function throttle(fn,delay){
28     var _args = Array.prototype.slice.call(arguments,2) //获取参入的参数
29     var timer = null;
30     return function(){
31         var that = this //保存this对象 因为有些事件触发需要保存当前的对象
32         var _secondArgs = [].concat(Array.prototype.slice.call(arguments),_args) //获取参入的参数
33         if(!timer){
34             timer = setTimeout(function(){
35                 fn.apply(that,_secondArgs);
36                 timer = null
37             },delay)    
38         }
39         
40     }
41 }
42 
43 //var a = b.bind()
44 //bind的模拟实现
45 Function.prototype.bind1 = function(context){
46     var that = context
47     var self = this
48     var _args = Array.prototype.slice.call(arguments,1);
49     
50     var fund = function(){
51         //这个函数会返回出去 如果作为构造函数使用的话 这个函数内部的this就是指向实例
52         var args = _args.concat([].slice.call(arguments));
53         //如果作为构造函数调用 -- 判断依据 返回函数是不是实例的构造函数
54         if(this instanceof fund){
55             //是的话 重新绑定this
56             return self.apply(this,args)
57         }else{
58             return sele.apply(that,args)
59         }
60   
61     }
62         //设置原型
63         fund.prototype = self.prototype
64         return fund
65       
66 }
67 
68 //数组扁平化
69 function flattern(array){
70     var _returnArray = []
71     array.forEach(function(ele){
72         if(Array.isArray(ele)){
73             //还是数组的话继续递归
74             _returnArray = _returnArray.concat(flattern(ele))
75         }else{
76             _returnArray.push(ele)
77         }
78     })
79 
80     return _returnArray
81     
82 }
83 
84 console.log(flattern([1,2,[3,4,[5,6,7]],[8,9,[10,[11,12[13,14]]]]]))

 

一些没啥卵用js功能函数的笔记

原文:https://www.cnblogs.com/carrotWu/p/9071388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!