iuni-summary

=============================================================
移动端加入样式具有
快速滚动和回弹的效果:::::
-webkit-overflow-scrolling : touch;




==========================================================
生成随机数区间
function getRandom(Min,Max){
return Min+Math.round((Max-Min)*Math.random());
}
============================================
/***scroll事件实现监控滚动条分页简单示例,使用ajax加载***/


var bot = 50; 
//bot是底部距离的高度
if ((bot + $(window).scrollTop()) >= 
($(document).height() - $(window).height())) {
//当底部基本距离+滚动的高度〉=文档的高度-窗体的高度时;
//我们需要去异步加载数据了
 //TODO
}


============================================================= 
查寻某个字符在数组里头的索引位置:(此种实现思想较好)


 function indexOf(arr, str) {
    var i = arr.length;
    while (i--) {
      if (arr[i] === str) return i;
    }
    return -1;
  }
  
 调用:indexOf([1,3,4,5,323,65,344], 344);
 /************JS API indexOf的内部实现**********/
 String.prototype.indexOf = function(str){
var ary = this.split('');
    var i = ary.length;
    while (i--) {
      if (ary[i] === str) return i;
    }
    return -1;
}
'abcdefg'.indexOf('c')
==========================================================
//转换成字节byte
function $get_file_size( unit, amount ){
return ( { 'K': 1024, 'M': 1024 * 1024, 'G': 1024 * 1024 * 1024 }[ unit ] || 1 ) * amount;
}
============================================
//过滤字符串
function filter(text) {
return text.replace(/[<>&#\/\\]/g, function(r) {
return {
'<': '<',
'>': '>',
'&': '&',
'#': '#',
'\\': '\',
'/': '/'
}[r];
});
}
=============================================================================
柯里化Currying:
----------------
function f (x) {
  return function (y) {
    return function (z) {
      return function (a) {
        return function (b) {
          return function (c) {
              console.log(x  + y + z + a + b + c);
          };
        };
      };
    };
  };
}


调用方式:f(1)(2)(3)(4)(5)(6);
====================================================================================
闭包的实现:
--------------------------
eg5:
-------------------------------
function $getSingle(fn) {
var ret;
return function() {
return ret || (ret = fn.apply(this, arguments));
};
};
----------------------------
eg4:
----------------------
function move(start) {
  var pos = start;
  return function () {
    return 'Move to ' + (pos += 2) + '.';
  }
}
调用方式:var fn = move(5);fn();


-------------等价于-------------:
var move = (function () {
  var pos;
  return function (start) {
   pos = pos || start;
    return 'Move to ' + (pos += 2) + '.';
  }
})();


调用方式:move(5);
-----------------------------
eg1:
----------------------------
$PageExecTime = (function() {
var startTime,
endTime,
callback;


return {
start: function() {
startTime = +new Date;
},
end: function(__callback) {
endTime = +new Date;
(__callback || callback || function() {})(endTime - startTime);
},
setCallback: function(__callback) {
callback = __callback || callback;
}
}


})();
调用方式:$PageExecTime.start()//返回的是对象,以对象的方式调用
----------------------------
eg2:
----------------------------
$cut_len = (function() {


var getLength = function(str) {
var a = str.length,
b = str.match(/[^\x00-\x80]/ig);
if (b != null) a += b.length * 1;
return a;
}


return function(str, length) {
var len = getLength(str);


if (len > length + 3) {
return $toHTML(str.substr(0, length) + '...');
}


return str;


}


})();


调用方式: $cut_len('我扔需要',3);//返回的是函数,以函数的方式调用


--------------------
eg3: 深度闭包
-------------------


var $funcExecTime = (function() {


Function.prototype.before = function(beforefn) {
var __self = this; //保存原函数的引用
return function() { //返回包含了原函数和新函数的"代理"函数
beforefn.apply(this, arguments); //执行新函数,且保证this不被劫持,新函数接受                                    //的参数也会被原封不动的传入原函数,新函数在原函数之前执行。
return __self.apply(this, arguments); //执行原函数并返回原函数的执行结果,                                                         //并且保证this不被劫持
}
}


Function.prototype.after = function(afterfn) {
var __self = this;
return function() {
var ret = __self.apply(this, arguments);
afterfn.apply(this, arguments);
return ret;
}
};




return function(fn, funcName) {


return (function() {
var startTime;


return fn.before(function() {
startTime = +new Date;
}).after(function() {
var endTime = +new Date;
$funcExecTime.callback && $funcExecTime.callback(endTime - startTime, funcName);
});


})();
}


})();
====================================================


判断数组
 var isArray =  function(object){object instanceof Array} 
 
其它判断(String|Number)
var isObject = function (object) {
            return Object.prototype.toString.call(object) === '[object Object]';
        };
或者
var isFunction = function(object) {
        return typeof object === 'function';
    }
=========================================================================================


//克隆数组、对象
function $clone(obj, deep) {
if (!obj) {
return obj;
}
if ($isArray(obj)) {
var clone = new Array(obj.length);
for (var i = obj.length; i--;) {
clone[i] = deep ? $clone(obj[i], deep) : obj[i];
}
return clone;
} else if (Object.prototype.toString.call(obj) == "[object Object]") {
var clone = {};
for (var k in obj) {
if (obj.hasOwnProperty(k)) {
clone[k] = deep ? $clone(obj[k], deep) : obj[k];
}
}
return clone;
} else {
return obj;
}
}
============================================================
字节计算
方法一:
function getStrlen(str){
        var json = {len:0};
        var re = /[\u4e00-\u9fa5]/;
        for (var i = 0; i < str.length; i++) {
                if(re.test(str.charAt(i))){
                        json['len']++;
                }
        };
        return json['len']+str.length;
}
方法二:
function getStrlen(str){
var curlen  = 0;
var charset = document.characterSet ? document.characterSet : document.charset;
for(var i = 0; i < v.length; i++) {
if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) {
curlen += charset == 'UTF-8' ? 2 : 1;
}else{
 curlen+=1;
}
}
return curlen;
}
方法三:
var checkLength=function(s){
var l = 0;
var a = s.split("");
for (var i = 0; i < a.length; i++) {
if (a[i].charCodeAt(0) < 299) {
l++;
} else {
l += 2;
}
}
return l;
}
===========================================================================


//平滑返回顶部  
$('.home').click(function(){  
    $("html,body").animate({scrollTop: 0}, 1000);  
    return false;  
}
锚点animate定位
$(".nav a").each(function(){
    var array = new Array("#list1","#list2","#list3","#list4");
    $(this).click(function(e){
      var index = $(".nav a").index(this);
      $("html,body").stop().animate({scrollTop:$(array[index]).offset().top-55 +'px'},1000);
        });
  });


======================
判断是否选中
is(':checked')


============================================
try{
               data = JSON.parse( data );
           }catch(e){
               data = eval( '(' + data + ')' );
           }


====================================================




手机号码星号替换


'13510241789'.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
============================
ie6不支持fixed属性========================================================


//tab浮层
function navFloat(){
var winj=$(window),srch=winj.scrollTop();
var buy2_show=btn_buy2.getAttribute("data-show")==="1"?true:false;
 btn_buy2.style.display="none";

if(srch<fixH){
floatFix.css({"position":"relative",top:0,"width":"auto"});
}else{
if($isBrowser("ie6")){
floatFix.css({"position":"absolute",top:srch,"width":"100%"});
}else{
floatFix.css({"position":"fixed",top:0,"width":"100%"});
}
if(buy2_show){
btn_buy2.style.display="";
}
}
}
var floatCon=$("#accessories_floatCon"),
     floatFix=$("#accessories_float"),
     fixH=floatFix.offset().top;
     
$(window).bind("scroll resize",navFloat);
navFloat();


===========================================================================================================
创建请求
var request = $Request.create({
url: c,
type: 'jsonp',
timeout: 5000
});


request.timeout(function(){
$Event.trigger( 'set_cookie_timeout' );
});


request.error(function(){
$Event.trigger( 'set_cookie_timeout' );
});




request.done(function(){
start += 1;
if ( start === length ){
return $Event.trigger( 'dispatch_done' );
}
});


request.start();
=================================================================================
es6;
css3选择器
移动端事件(重力,tap穿透,Event)
h5








gulp
coffeeScript

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值