javascript实用方法总结_javascript技巧

引言:

  本章没有深奥的讲解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常用的方法了,希望大家能够喜欢。

时间: 2024-11-02 12:02:05

javascript实用方法总结_javascript技巧的相关文章

分享Javascript实用方法二_javascript技巧

JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能. 承接上一篇, Object keys object的keys方法能够获取一个给定对象的所有键(key/属性名)并以数组的形式返回.这个方法可以用于键的筛选.匹配等. var basket = { strawberry: 12,

JavaScript 验证浏览器是否支持javascript的方法小结_javascript技巧

效果:  先来看看别的网站是怎么做的: google.com的登录: 客户端 和服务器端都验证了,并且提示信息一样的 baidu.com 的登录: 屏蔽了密码输入框 http://fanfou.com/register : 客户端和后台都验证了,但是提示的信息方式不一样 http://login.xiaonei.com/Login.do : 用户禁用Js后有提示信息 我的实现步骤: 思想: 1,默认(禁用js)submit按钮式不显示的,如果启用后,就显示submit按钮 2,通过<noscri

JavaScript弹出窗口方法汇总_javascript技巧

本文实例汇总了常用的JavaScript弹出窗口方法,供大家对比参考,希望能对大家有所帮助.详细方法如下: 1.无提示刷新网页: 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点"确定"才会刷新. 而有的页面不会提示,不弹出提示窗口,直接就刷新了. 如果页面没有form, 则不会弹出提示窗口 如果页面有form表单, a)<form  method="post" ...>     会弹出提示窗口 b)<form  method=&quo

javascript中通过arguments参数伪装方法重载_javascript技巧

在很多面向对象的高级语言中,都有方法的重载.而javascript没有方法重载这个概念.但是我们可以通过arguments这个参数来伪装成函数的重载 在模拟之前我们先看一下代码: 复制代码 代码如下: //表面上没有声明形式参数的函数 function fun() { alert("示例代码"); } fun("小明", 100, true);//自己写了三个实际参数 通过结果我们看到,即使我们声明函数的时候没有定义形式参数,在调用方法的时候,我们也是可以写实际参数

JavaScript中使用数组方法汇总_javascript技巧

定义数组 复制代码 代码如下: Var arryMap = {riskId:"<%=riskid%>",riskType:"<%=risktype%>"}; 或 复制代码 代码如下: Var arry =[]; 使用: var risk = arryMap.riskId; Arry.push({id:"1",name:"1"}); Arry.push({id:"2",name:&qu

Javascript中的apply()方法浅析_javascript技巧

之前我们说过 Javascript Call 方法,这次我们就说说和Call方法类似的apply方法. apply vs call 两者间的不同在于:传递的是参数,还是参数数组 这个是call的用法 复制代码 代码如下: theFunction.call(valueForThis, arg1, arg2, ...) 而这个则是apply 复制代码 代码如下: theFunction.apply(valueForThis, arrayOfArgs) 故而 复制代码 代码如下: arrayOfArg

Immutable 在 JavaScript 中的应用_javascript技巧

Mutable 对象 在 JavaScript 中,对象是引用类型的数据,其优点在于频繁的修改对象时都是在原对象的基础上修改,并不需要重新创建,这样可以有效的利用内存,不会造成内存空间的浪费,对象的这种特性可以称之为 Mutable,中文的字面意思是「可变」. 对于 Mutable 的对象,其灵活多变的优点有时可能会成为其缺点,越是灵活多变的数据越是不好控制,对于一个复杂结构的对象来说,一不小心就在某个不经意间修改了数据,假如该对象又在多个作用域中用到,此时很难预见到数据是否改变以及何时改变的.

超实用的javascript时间处理总结_javascript技巧

前言 大家在前端Javascript开发中常会遇到处理日期时间的问题,经常会拿来一大堆处理函数才能完成一个简单的日期时间显示效果.为了提高网站的开发速度,可以把主代码封装在一个单独的函数里面,在需要的时候直接调用,下面看看给大家总结的一些时间处理类.大家需要的时候直接调用就可以了. var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate

JS获取年月日时分秒的方法分析_javascript技巧

本文实例分析了JS获取年月日时分秒的方法.分享给大家供大家参考,具体如下: var d = new Date(); var time = d.getFullYear() + "-" +(d.getMonth()+1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); 必须这么繁杂,没