javascript实用方法总结


Posted in Javascript onFebruary 06, 2015

引言:

本章没有深奥的讲解js一些底层原理,比如this指针、作用域、原型啦,涉及的都是一些有利于平时开发时简化代码,提高执行效率,或者说可以当做一种经验方法来使用,篇幅都不长,小步快跑的让你阅读完整篇文章,体验编程的快乐。

 获取两个区间之内随机数

function getRandomNum(Min, Max){ // 获取两个区间之内随机数

    // @逆火狂飙  提出有可能第一个参数大于第二个参数,所以增加一下判断更可靠

    if (Min > Max) 

    Max = [Min, Min = Max][0]; // 快速交换两个变量值

    

    var Range = Max - Min + 1;

    var Rand = Math.random();

    return Min + Math.floor(Rand * Range);

};

随机返回一个 正/负参数

function getRandomXY(num){ // 随机返回一个 正/负参数

    num = new Number(num);

    if (Math.random() <= 0.5) 

        num = -num;

    return num;

}

 setInterval()或setTimeOut()计时器函数传参

var s = '我是参数';

function fn(args) {

    console.log(args);

}

var a = setInterval(fn(s),100);    // xxxxxx错误xxxxx

var b = setInterval(function(){    // 正确,用匿名函数调用被计时函数

    fn(s);

}, 100);

setInterval()或setTimeOut()计时器递归调用

var s = true;

function fn2(a, b){        //  步骤三

    if (s) {

        clearInterval(a);

        clearInterval(b);

    }

};

function fn(a){     //  步骤二

    var b = setInterval(function(){

        fn2(a, b) // 传入两个计时器

    }, 200)

};

var a = setInterval(function(){      //  步骤一

    fn(a); // b代表计时器本身,可座位参数传递

}, 100);

字符串转换为数字

// 无需 new Number(String)   也无需 Number(String) 只需字符串减去零即可

var str = '100';  // str: String

var num = str - 0;// num: Number

空值判断

var s = '';  // 空字符串

if(!s)         // 空字符串默认转换为布尔false,可以直接写在判断语句里面

if(s != null) // 但是空字符串 != null

if(s != undefined) // 空字符串也 != undefined

IE浏览器parseInt()方法

// 下面的转换在IE下为0,其他浏览器则为1,这跟IE浏览器解释数字的进制有关

var iNum = parseInt(01);

// 所以,兼容的写法为

var num = parseInt(new Number(01));

Firebug便捷调试js代码

//Firebug内置一个console对象,提供内置方法,用来显示信息

/**

 * 1:console.log(),可以用来取代alert()或document.write(),支持占位符输出,字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)。如:console.log("%d年%d月%d日",2011,3,26)

 * 2:如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()

 * 3:console.dir()可以显示一个对象所有的属性和方法

 * 4:console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码

 * 5:console.assert()断言,用来判断一个表达式或变量是否为真

 * 6:console.trace()用来追踪函数的调用轨迹

 * 7:console.time()和console.timeEnd(),用来显示代码的运行时间

 * 8:性能分析(Profiler)就是分析程序各个部分的运行时间,找出瓶颈所在,使用的方法是console.profile()....fn....console.profileEnd()

 */

 快速取当前时间毫秒数

// t == 当前系统毫秒值,原因:+号运算符会,会调用Date的valueOf()方法。

var t = +new Date(); 

快速取小数整数位

// x == 2,以下x值都为2,负数也可转换

var x = 2.00023 | 0;

// x = '2.00023' | 0;

两个变量值互换(不用中间量)

var a = 1;

var b = 2;

a = [b, b=a][0]

alert(a+'_'+b)    // 结果 2_1,a和b的值已经互换。

 逻辑或'||'运算符

// b不为null:a=b, b为null:a=1。

var a = b || 1;

// 较常见的用法为为一个插件方法传参,和获取事件目标元素:event = event || window.event

// IE有window.event对象,而FF没有。

只有方法对象才有prototype原型属性

// 方法有对象原型prototype属性,而原始数据没有该属性,如  var a = 1, a没有prototype属性

function Person() {} // 人的构造函数

Person.prototype.run = function() { alert('run...'); } // 原型run方法

Person.run(); // error

var p1 = new Person(); // 只有在new操作符时,此时才会把原型run方法赋值给p1

p1.run(); // run...

快速获取当天为星期几

// 计算系统当前时间是星期几

var week = "今天是:星期" + "日一二三四五六".charat(new date().getDay());

闭包偏见

/**

 * 闭包:任何一个js方法体都可以称为一个闭包,并非什么只有内嵌函数来引用了外部函数的某个参数或属性才会发生。

 * 它有一个独立作用域,在该作用域内可存在若干的子作用域(就是方法嵌套方法),最终该闭包作用域为最外层方法的作用域

 * 它包含了本身方法参数和所有内嵌函数的方法参数,所以当一个内嵌函数在外部有引用时,该引用的作用域为引用函数所在的(顶级)方法作用域

 */ 

function a(x) {

    function b(){

        alert(x); // 引用外部函数参数

    }

    return b;

}

var run = a('run...'); 

// 由于作用域的扩大,可以引用到外部函数a的变量并显示

run(); // alert(): run..

获取地址参数字符串和定时刷新

// 获取问号?后面的内容,包括问号

var x = window.location.search

// 获取警号#后面的内容,包括#号

var y = window.location.hash

// 配合定时器可实现网页自动刷新

window.location.reload();

Null和Undefined

/**

 * Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。

 * Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

 * ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。

 * 但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法

 * 在进行判断时根据需要,判断对象是否有值时最好用‘==='强类型判断。

 */

var a;

alert(a === null); // false,因为a不是一个空对象

alert(a === undefined); // true,因为a未初始化,值为undefined

// 引申

alert(null == undefined); // true,因为‘=='运算符会进行类型转换,

// 同理

alert(1 == '1'); // true

alert(0 == false); // true,false转换为Number类型为0

 给方法动态添加参数

// 方法a多了一个参数2

function a(x){

    var arg = Array.prototype.push.call(arguments,2);

    alert(arguments[0]+'__'+arguments[1]);

}

自定义SELECT边框样式

<!-- 复制到页面试试效果吧,可以随意自定义样式 -->

<span style="border:1px solid red; position:absolute; overflow:hidden;" >

    <select style="margin:-2px;">

        <option>自定义SELECT边框样式</option>

        <option>222</option>

        <option>333</option>

    </select>

</span>

最简单的调色盘

<!-- JS来提取其value值即可给任意对象设置任意颜色哦 -->

<input type=color />

函数、对象 is 数组?

var anObject = {}; //一个对象

anObject.aProperty = “Property of object”; //对象的一个属性

anObject.aMethod = function(){alert(“Method of object”)}; //对象的一个方法

//主要看下面:

alert(anObject[“aProperty”]); //可以将对象当数组以属性名作为下标来访问属性

anObject[“aMethod”](); //可以将对象当数组以方法名作为下标来调用方法

for( var s in anObject) //遍历对象的所有属性和方法进行迭代化处理

alert(s + ” is a ” + typeof(anObject[s]));

// 同样对于function类型的对象也是一样:

var aFunction = function() {}; //一个函数

aFunction.aProperty = “Property of function”; //函数的一个属性

aFunction.aMethod = function(){alert(“Method of function”)}; //函数的一个方法

//主要看下面:

alert(aFunction[“aProperty”]); //可以将函数当数组以属性名作为下标来访问属性

aFunction[“aMethod”](); //可以将函数当数组以方法名作为下标来调用方法

for( var s in aFunction) //遍历函数的所有属性和方法进行迭代化处理

alert(s + ” is a ” + typeof(aFunction[s]));
/**

 * 是的,对象和函数可以象数组一样,用属性名或方法名作为下标来访问并处理。

 * 那么,它到底应该算是数组呢,还是算对象?我们知道,数组应该算是线性数据结构,线性数据结构一般有一定的规律,适合进行统一的批量迭代操作等,有点像波。

 * 而对象是离散数据结构,适合描述分散的和个性化的东西,有点像粒子。

 * 因此,我们也可以这样问:JavaScript 里的对象到底是波还是粒子?如果存在对象量子论,那么答案一定是:波粒二象性!

 * 因此,JavaScript里的函数和对象既有对象的特征也有数组的特征。这里的数组被称为“字典”,一种可以任意伸缩的名称值对儿的集合。其实, object和function的内部实现就是一个字典结构,但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。正如量子力学在一些地方用粒子来 解释和处理问题,而在另一些地方却用波来解释和处理问题。你也可以在需要的时候,自由选择用对象还是数组来解释和处理问题。只要善于把握 JavaScript 的这些奇妙特性,就可以编写出很多简洁而强大的代码来。

 */

点击空白处能触发某一元素关闭/隐藏

/**

 * 有时候页面有个下拉菜单或者什么的效果,需要用户点击空白处或者点击其他元素时将其隐藏

 * 可用一个全局document点击事件来触发

 * @param {Object} "目标对象"

 */

$(document).click(function(e){

    $("目标对象").hide();

});

/**

 * 但是有一个缺点就是当你点击该元素又想让他显示

 * 如果你不及时阻止事件冒泡至全局出发document对象点击时,上面方法就会执行

 */

$("目标对象").click(function(event){

    event = event || window.event;

    event.stopPropagation(); // 当点击目标对象时,及时阻止事件冒泡

    $("目标对象").toggle();

});

以上就是个人总结的一些javascript常用的方法了,希望大家能够喜欢。

Javascript 相关文章推荐
javascript 写类方式之八
Jul 05 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
Javascript堆排序算法详解
Dec 03 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
jQuery插件 Jqplot图表实例
Jun 18 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
Sep 27 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
Feb 10 Javascript
解决node修改后需频繁手动重启的问题
May 13 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
javascript实现限制上传文件大小
Feb 06 #Javascript
jquery实现鼠标滑过显示提示框的方法
Feb 05 #Javascript
javascript去除字符串左右两端的空格
Feb 05 #Javascript
jQuery判断对象是否存在的方法
Feb 05 #Javascript
jquery实现对联广告的方法
Feb 05 #Javascript
jquery实现在光标位置插入内容的方法
Feb 05 #Javascript
Jquery中offset()和position()的区别分析
Feb 05 #Javascript
You might like
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
python基础教程之字典操作详解
2014/03/25 Python
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
会计专业自我评价
2014/02/12 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android