javascript常用方法汇总


Posted in Javascript onDecember 02, 2014

本章没有深奥的讲解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 相关文章推荐
jquery简单体验
Jan 10 Javascript
jQuery第三课 修改元素属性及内容的代码
Mar 14 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
23个Javascript弹出窗口特效整理
Feb 25 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
Aug 18 Javascript
JavaScript如何从listbox里同时删除多个项目
Oct 12 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
Feb 12 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
Sep 17 Javascript
node.js文件上传处理示例
Oct 27 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
js时间日期格式化封装函数
Dec 02 #Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 #Javascript
JavaScript基础知识学习笔记
Dec 02 #Javascript
Js 正则表达式知识汇总
Dec 02 #Javascript
21个JavaScript事件(Events)属性汇总
Dec 02 #Javascript
bootstrap改变按钮加载状态
Dec 01 #Javascript
使用ajax+jqtransform实现动态加载select
Dec 01 #Javascript
You might like
PHP读取文件内容的五种方式
2015/12/28 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
jquery获取radio值实例
2014/10/16 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
Python的Django框架使用入门指引
2015/04/15 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
浅谈python锁与死锁问题
2020/08/14 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
工作会议欢迎词
2014/01/16 职场文书
五好党支部事迹材料
2014/02/06 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
2014年党课学习材料
2014/05/11 职场文书
电子信息工程自荐信
2014/05/26 职场文书
商务经理岗位职责
2014/08/03 职场文书
好人好事演讲稿
2014/09/01 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书