JS常用函数和常用技巧小结


Posted in Javascript onOctober 15, 2016

学习和工作的过程中总结的干货,包括常用函数、常用js技巧、常用正则表达式、git笔记等。为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路。

Ajax请求

jquery ajax函数

我自己封装了一个ajax的函数,代码如下:

var Ajax = function(url, type success, error) {
$.ajax({
url: url,
type: type,
dataType: 'json',
timeout: 10000,
success: function(d) {
var data = d.data;
success && success(data);
},
error: function(e) {
error && error(e);
}
});
};
// 使用方法:
Ajax('/data.json', 'get', function(data) {
console.log(data);
});

jsonp方式

有时候我们为了跨域,要使用jsonp的方法,我也封装了一个函数:

function jsonp(config) {
var options = config || {}; // 需要配置url, success, time, fail四个属性
var callbackName = ('jsonp_' + Math.random()).replace(".", "");
var oHead = document.getElementsByTagName('head')[0];
var oScript = document.createElement('script');
oHead.appendChild(oScript);
window[callbackName] = function(json) { //创建jsonp回调函数
oHead.removeChild(oScript);
clearTimeout(oScript.timer);
window[callbackName] = null;
options.success && options.success(json); //先删除script标签,实际上执行的是success函数
};
oScript.src = options.url + '?' + callbackName; //发送请求
if (options.time) { //设置超时处理
oScript.timer = setTimeout(function () {
window[callbackName] = null;
oHead.removeChild(oScript);
options.fail && options.fail({ message: "超时" });
}, options.time);
}
};
// 使用方法:
jsonp({
url: '/b.com/b.json',
success: function(d){
//数据处理
},
time: 5000,
fail: function(){
//错误处理
} 
});

常用正则验证表达式

手机号验证

var validate = function(num) {
var exp = /^1[3-9]\d{9}$/;
return exp.test(num);
};

身份证号验证

var exp = /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/;

ip验证

var exp = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;

常用js函数

$(window).scroll(function() {
var a = $(window).scrollTop();
if(a > 100) {
$('.go-top').fadeIn();
}else {
$('.go-top').fadeOut();
}
});
$(".go-top").click(function(){
$("html,body").animate({scrollTop:"0px"},'600');
});

阻止冒泡

function stopBubble(e){
e = e || window.event; 
if(e.stopPropagation){
e.stopPropagation(); //W3C阻止冒泡方法 
}else { 
e.cancelBubble = true; //IE阻止冒泡方法 
} 
}

全部替换replaceAll

var replaceAll = function(bigStr, str1, str2) { //把bigStr中的所有str1替换为str2
var reg = new RegExp(str1, 'gm');
return bigStr.replace(reg, str2);
}

获取浏览器url中的参数值

var getURLParam = function(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)', "ig").exec(location.search) || [, ""])[1].replace(/\+/g, '%20')) || null;
};

深度拷贝对象

function cloneObj(obj) {
var o = obj.constructor == Object ? new obj.constructor() : new obj.constructor(obj.valueOf());
for(var key in obj){
if(o[key] != obj[key] ){
if(typeof(obj[key]) == 'object' ){
o[key] = mods.cloneObj(obj[key]);
}else{
o[key] = obj[key];
}
}
}
return o;
}

数组去重

var unique = function(arr) {
var result = [], json = {};
for (var i = 0, len = arr.length; i < len; i++){
if (!json[arr[i]]) {
json[arr[i]] = 1;
result.push(arr[i]); //返回没被删除的元素
}
}
return result;
};

判断数组元素是否重复

var isRepeat = function(arr) { //arr是否有重复元素
var hash = {};
for (var i in arr) {
if (hash[arr[i]]) return true;
hash[arr[i]] = true;
}
return false;
};

生成随机数

function randombetween(min, max){
return min + (Math.random() * (max-min +1));
}

操作cookie

own.setCookie = function(cname, cvalue, exdays){
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = 'expires='+d.toUTCString();
document.cookie = cname + '=' + cvalue + '; ' + expires;
};
own.getCookie = function(cname) {
var name = cname + '=';
var ca = document.cookie.split(';');
for(var i=0; i< ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return '';
};

知识技巧总结

数据类型

underfined、null、0、false、NaN、空字符串。他们的逻辑非结果均为true。

闭包格式

好处:避免命名冲突(全局变量污染)。

(function(a, b) {
console.log(a+b); //30
})(10, 20);

截取和清空数组

var arr = [12, 222, 44, 88];
arr.length = 2; //截取,arr = [12, 222]; 
arr.length = 0; //清空,arr will be equal to [].

获取数组的最大最小值

var numbers = [5, 45822, 120, -215];
var maxInNumbers = Math.max.apply(Math, numbers); //45822
var minInNumbers = Math.min.apply(Math, numbers); //-215

浮点数计算问题

0.1 + 0.2 == 0.3 //false

为什么呢?因为0.1+0.2等于0.30000000000000004。JavaScript的数字都遵循IEEE 754标准构建,在内部都是64位浮点小数表示。可以通过使用toFixed()来解决这个问题。

数组排序sort函数

var arr = [1, 5, 6, 3]; //数字数组
arr.sort(function(a, b) {
return a - b; //从小到大排
return b - a; //从大到小排
return Math.random() - 0.5; //数组洗牌
});
var arr = [{ //对象数组
num: 1,
text: 'num1'
}, {
num: 5,
text: 'num2'
}, {
num: 6,
text: 'num3'
}, {
num: 3,
text: 'num4'
}]; 
arr.sort(function(a, b) {
return a.num - b.num; //从小到大排
return b.num - a.num; //从大到小排
});

对象和字符串的转换

var obj = {a: 'aaa', b: 'bbb'};
var objStr = JSON.stringify(obj); // "{"a":"aaa","b":"bbb"}"
var newObj = JSON.parse(objStr); // {a: "aaa", b: "bbb"}

git笔记

git使用之前的配置

1.git config --global user.email xxx@163.com

2.git config --global user.name xxx

3.ssh-keygen -t rsa -C xxx@163.com(邮箱地址) // 生成ssh

4.找到.ssh文件夹打开,使用cat id_rsa.pub //打开公钥ssh串

5.登陆github,settings - SSH keys - add ssh keys (把上面的内容全部添加进去即可)

说明:然后这个邮箱(xxxxx@gmail.com)对应的账号在github上就有权限对仓库进行操作了。可以尽情的进行下面的git命令了。

git常用命令

1、git config user.name / user.email //查看当前git的用户名称、邮箱

2、git clone https://github.com/jarson7426/javascript.git project //clone仓库到本地。

3、修改本地代码,提交到分支: git add file / git commit -m “新增文件”

4、把本地库推送到远程库: git push origin master

5、查看提交日志:git log -5

6、返回某一个版本:git reset --hard 123

7、分支:git branch / git checkout name / git checkout -b dev

8、合并name分支到当前分支:git merge name / git pull origin

9、删除本地分支:git branch -D name

10、删除远程分支: git push origin :daily/x.x.x

11、git checkout -b mydev origin/daily/1.0.0 //把远程daily分支映射到本地mydev分支进行开发
12、合并远程分支到当前分支 git pull origin daily/1.1.1

13、发布到线上:

git tag publish/0.1.5
git push origin publish/0.1.5:publish/0.1.5

14、线上代码覆盖到本地:

git checkout --theirs build/scripts/ddos
git checkout --theirs src/app/ddos

以上所述是小编给大家介绍的JS常用函数和常用技巧小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery 常用操作代码
Mar 14 Javascript
js获取单选框或复选框值及操作
Dec 18 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Jun 05 Javascript
node.js中的fs.fstat方法使用说明
Dec 15 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
详解node HTTP请求客户端 - Request
May 05 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
JS常见错误(Error)及处理方案详解
Jul 02 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 #Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 #Javascript
原生JS实现的放大镜效果实例代码
Oct 15 #Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
Oct 15 #Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 #Javascript
jstl中判断list中是否包含某个值的简单方法
Oct 14 #Javascript
js中获取 table节点各tr及td的内容简单实例
Oct 14 #Javascript
You might like
PHP的栏目导航程序
2006/10/09 PHP
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
Django中的CBV和FBV示例介绍
2018/02/25 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python实现弹窗祝福效果
2019/04/07 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
师范毕业生自荐信
2013/10/17 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
保护环境建议书作文300字
2015/09/14 职场文书