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 相关文章推荐
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
JS定义回车事件(实现代码)
Jul 08 Javascript
js实现div的切换特效上一个下一个
Feb 11 Javascript
jQuery的缓存机制浅析
Jun 07 Javascript
jquery 取子节点及当前节点属性值的方法
Aug 24 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 Javascript
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 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简介
2006/10/09 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
PHP 快速排序算法详解
2014/11/10 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
javascript 写类方式之二
2009/07/05 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python获取目录下所有文件的方法
2015/06/01 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
英文商务邀请信
2014/01/22 职场文书
2014年林业工作总结
2014/12/05 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书