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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
JQuery切换显示的效果实例代码
Feb 27 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
May 14 Javascript
js导航栏单击事件背景变换示例代码
Jan 13 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
Sep 05 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
ES6 Promise对象概念与用法分析
Apr 01 Javascript
Node.js简单入门前传
Aug 21 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
使用vue的transition完成滑动过渡的示例代码
Jun 25 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
Jul 19 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
php基础知识:类与对象(1)
2006/12/13 PHP
处理单名多值表单的详解
2013/06/08 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python 中字典嵌套列表的方法
2018/07/03 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
总裁助理岗位职责
2014/02/17 职场文书
小学生评语大全
2014/04/18 职场文书
考试作弊检讨书
2014/10/21 职场文书
小学庆六一主持词
2015/06/30 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android