引言:

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


获取两个区间之内随机数

  1. function getRandomNum(Min, Max){ // 获取两个区间之内随机数
  2. var Range = Max - Min + 1;
  3. var Rand = Math.random();
  4. return Min + Math.floor(Rand * Range);
  5. };

随机返回一个 正/负参数

  1. function getRandomXY(num){ // 随机返回一个 正/负参数
  2. num = new Number(num);
  3. if (Math.random() <= 0.5)
  4. num = -num;
  5. return num;
  6. }

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

 
  1. var s = '我是参数';
  2. function fn(args) {
  3. console.log(args);
  4. }
  5. var a = setInterval(fn(s),100); // xxxxxx错误xxxxx
  6. var b = setInterval(function(){ // 正确,用匿名函数调用被计时函数
  7. fn(s);
  8. }, 100);
 

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

 
  1. var s = true;
  2. function fn2(a, b){ // 步骤三
  3. if (s) {
  4. clearInterval(a);
  5. clearInterval(b);
  6. }
  7. };
  8. function fn(a){ // 步骤二
  9. var b = setInterval(function(){
  10. fn2(a, b) // 传入两个计时器
  11. }, 200)
  12. };
  13. var a = setInterval(function(){ // 步骤一
  14. fn(a); // b代表计时器本身,可座位参数传递
  15. }, 100);
 

字符串转换为数字

  1. // 无需 new Number(String) 也无需 Number(String) 只需字符串减去零即可
  2. var str = '100'; // str: String
  3. var num = str - 0;// num: Number

空值判断

  1. var s = ''; // 空字符串
  2. if(!s) // 空字符串默认转换为布尔false,可以直接写在判断语句里面
  3. if(s != null) // 但是空字符串 != null
  4. if(s != undefined) // 空字符串也 != undefined

IE浏览器parseInt()方法

  1. // 下面的转换在IE下为0,其他浏览器则为1,这跟IE浏览器解释数字的进制有关
  2. var iNum = parseInt(01);
  3. // 所以,兼容的写法为
  4. var num = parseInt(new Number(01));

Firebug便捷调试js代码

 
  1. //Firebug内置一个console对象,提供内置方法,用来显示信息
  2. /**
  3. * 1:console.log(),可以用来取代alert()或document.write(),支持占位符输出,字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)。如:console.log("%d年%d月%d日",2011,3,26)
  4. * 2:如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()
  5. * 3:console.dir()可以显示一个对象所有的属性和方法
  6. * 4:console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码
  7. * 5:console.assert()断言,用来判断一个表达式或变量是否为真
  8. * 6:console.trace()用来追踪函数的调用轨迹
  9. * 7:console.time()和console.timeEnd(),用来显示代码的运行时间
  10. * 8:性能分析(Profiler)就是分析程序各个部分的运行时间,找出瓶颈所在,使用的方法是console.profile()....fn....console.profileEnd()
  11. */
 

快速取当前时间毫秒数

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

快速取小数整数位

  1. // x == 2,以下x值都为2,负数也可转换
  2. var x = 2.00023 | 0;
  3. // x = '2.00023' | 0;

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

  1. var a = 1;
  2. var b = 2;
  3. a = [b, b=a][0]
  4. alert(a+'_'+b) // 结果 2_1,a和b的值已经互换。

逻辑或'||'运算符

  1. // b不为null:a=b, b为null:a=1。
  2. var a = b || 1;
  3. // 较常见的用法为为一个插件方法传参,和获取事件目标元素:event = event || window.event
  4. // IE有window.event对象,而FF没有。

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

 
  1. // 方法有对象原型prototype属性,而原始数据没有该属性,如 var a = 1, a没有prototype属性
  2. function Person() {} // 人的构造函数
  3. Person.prototype.run = function() { alert('run...'); } // 原型run方法
  4. Person.run(); // error
  5. var p1 = new Person(); // 只有在new操作符时,此时才会把原型run方法赋值给p1
  6. p1.run(); // run...
 

快速获取当天为星期几

  1. // 计算系统当前时间是星期几
  2. var week = "今天是:星期" + "日一二三四五六".charat(new date().getday());

闭包偏见

 
  1. /**
  2. * 闭包:任何一个js方法体都可以称为一个闭包,并非什么只有内嵌函数来引用了外部函数的某个参数或属性才会发生。
  3. * 它有一个独立作用域,在该作用域内可存在若干的子作用域(就是方法嵌套方法),最终该闭包作用域为最外层方法的作用域
  4. * 它包含了本身方法参数和所有内嵌函数的方法参数,所以当一个内嵌函数在外部有引用时,该引用的作用域为引用函数所在的(顶级)方法作用域
  5. */
  6. function a(x) {
  7. function b(){
  8. alert(x); // 引用外部函数参数
  9. }
  10. return b;
  11. }
  12. var run = a('run...');
  13. // 由于作用域的扩大,可以引用到外部函数a的变量并显示
  14. run(); // alert(): run..
 

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

 
  1. // 获取问号?后面的内容,包括问号
  2. var x = window.location.search
  3. // 获取警号#后面的内容,包括#号
  4. var y = window.location.hash
  5. // 配合定时器可实现网页自动刷新
  6. window.location.reload();
 

Null和Undefined

 
  1. /**
  2. * Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
  3. * Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
  4. * ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。
  5. * 但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法
  6. * 在进行判断时根据需要,判断对象是否有值时最好用‘===’强类型判断。
  7. */
  8. var a;
  9. alert(a === null); // false,因为a不是一个空对象
  10. alert(a === undefined); // true,因为a未初始化,值为undefined
  11. // 引申
  12. alert(null == undefined); // true,因为‘==’运算符会进行类型转换,
  13. // 同理
  14. alert(1 == '1'); // true
  15. alert(0 == false); // true,false转换为Number类型为0
 

给方法动态添加参数

  1. // 方法a多了一个参数2
  2. function a(x){
  3. var arg = Array.prototype.push.call(arguments,2);
  4. alert(arguments[0]+'__'+arguments[1]);
  5. }

自定义SELECT边框样式

 
  1. <!-- 复制到页面试试效果吧,可以随意自定义样式 -->
  2. <span style="border:1px solid red; position:absolute; overflow:hidden;" >
  3. <select style="margin:-2px;">
  4. <option>自定义SELECT边框样式</option>
  5. <option>222</option>
  6. <option>333</option>
  7. </select>
  8. </span>
 

最简单的调色盘

  1. <!-- JS来提取其value值即可给任意对象设置任意颜色哦 -->
  2. <input type=color />

函数、对象 is 数组?

 
  1. var anObject = {}; //一个对象
  2. anObject.aProperty = Property of object”; //对象的一个属性
  3. anObject.aMethod = function(){alert(“Method of object”)}; //对象的一个方法
  4.  
  5. //主要看下面:
  6. alert(anObject[“aProperty”]); //可以将对象当数组以属性名作为下标来访问属性
  7. anObject[“aMethod”](); //可以将对象当数组以方法名作为下标来调用方法
  8. for( var s in anObject) //遍历对象的所有属性和方法进行迭代化处理
  9. alert(s + is a + typeof(anObject[s]));
  10.  
  11. // 同样对于function类型的对象也是一样:
  12. var aFunction = function() {}; //一个函数
  13. aFunction.aProperty = Property of function”; //函数的一个属性
  14. aFunction.aMethod = function(){alert(“Method of function”)}; //函数的一个方法
  15. //主要看下面:
  16. alert(aFunction[“aProperty”]); //可以将函数当数组以属性名作为下标来访问属性
  17. aFunction[“aMethod”](); //可以将函数当数组以方法名作为下标来调用方法
  18. for( var s in aFunction) //遍历函数的所有属性和方法进行迭代化处理
  19. alert(s + is a + typeof(aFunction[s]));
 
 
  1. /**
  2. * 是的,对象和函数可以象数组一样,用属性名或方法名作为下标来访问并处理。
  3. * 那么,它到底应该算是数组呢,还是算对象?我们知道,数组应该算是线性数据结构,线性数据结构一般有一定的规律,适合进行统一的批量迭代操作等,有点像波。
  4. * 而对象是离散数据结构,适合描述分散的和个性化的东西,有点像粒子。
  5. * 因此,我们也可以这样问:JavaScript 里的对象到底是波还是粒子?如果存在对象量子论,那么答案一定是:波粒二象性!
  6. * 因此,JavaScript里的函数和对象既有对象的特征也有数组的特征。这里的数组被称为“字典”,一种可以任意伸缩的名称值对儿的集合。其实, object和function的内部实现就是一个字典结构,但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。正如量子力学在一些地方用粒子来 解释和处理问题,而在另一些地方却用波来解释和处理问题。你也可以在需要的时候,自由选择用对象还是数组来解释和处理问题。只要善于把握 JavaScript 的这些奇妙特性,就可以编写出很多简洁而强大的代码来。
  7. */
 

:)如有不错的方法还请慷慨留言推荐,我会一并加入进来。

ps:欢迎转载,转载请注明出处:http://www.cnblogs.com/liuyitian/p/4081517.html

                          写作不易,难免有疏漏和错误,还请慷慨指正,不错请推荐

s便携小方法,你值得拥有的更多相关文章

  1. js便携小方法,你值得拥有

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

  2. android 小方法

    小方法 1.获取屏幕分辨率: public class BaseTools { public static int getWindowWidth(Context context) { // 获取屏幕分 ...

  3. jQuery提供的小方法

    jQuery提供的小方法: 1.选择器 + 事件 + 函数 = 复杂的交互 2.循环处理与选择器匹配的各个元素:each() $("#").each(function(){     ...

  4. WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流、IPersistStreamInit接口的声明和一些相关的小方法

    原文:WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流.IPersistStreamInit接口的声明和一些相关的小方法 首先多谢朋友们的捧场: 今天给大家带来一个 ...

  5. SharePoint 查找字段内部名称的小方法

    今天逛博客园,偶然看到了下面的文章,介绍不用工具查看SharePoint字段内部名称,也介绍下自己的小方法. http://www.cnblogs.com/sunjunlin/archive/2012 ...

  6. wdatepicker控件de使用小方法汇总

    在总结wdatepicker控件的使用前,先插播一条吧,下午刚心血来潮百度的一条 问?C#中Int16.Int32.Int64.之间的区别,:::嘿嘿其实百度知道就有,但还是写上吧! Int16 表示 ...

  7. 提高django model效率的几个小方法

    django的model效率不是很高,特别是在做大量的数据库操作的时候,如果你只用django来开企业站或者外包项目的话,那可以小跳过下,而你恰巧是效率狂或者说是对程序的效率要求比较高的话,那就要注意 ...

  8. python - 常用的小方法

    常用的小方法: bin() oct() hex() chr() ord() dir() id() len() int() str() type() help() range(10)   /  rang ...

  9. (转)java中查找List的快捷小方法

    相信java开发的程序员,经常会遍历list里的数据,来查找想要的数据.之后选出来在做处理,我这有个小方法在大量数据的情况下能更快捷,当然这方法只对菜鸟有点用,对老鸟来说也许有更好的方法,请指点 遍历 ...

随机推荐

  1. 让自己的软件实现拖拽打开文件(覆盖WM_DROPFILES,使用DragQueryFile,DragFinish API函数)

    作者: 帅宏军 //声明 protected    procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES; --------- ...

  2. docker安装及问题处理

    1.在Ubuntu的命令行中输入 sudo apt-get install docker.io 2.如果切换到了root用户下 apt-get install docker.io 3.对于新安装的Ub ...

  3. vue项目对axios的全局配置

    标准的vue-cli项目结构(httpConfig文件夹自己建的): api.js: //const apiUrl = 'http://test';//测试域名,自己改成自己的 const apiUr ...

  4. 【例题5-5 UVA 12096 】The SetStack Computer

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用set来解决这个问题. 考虑如何表示 { {{}} }这个集合 我们可以把{}这个集合和一个数字映射->1 然后把1加入到某 ...

  5. [java面试]宇信易诚 广州分公司 java笔试题目回顾录

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...

  6. bootstrap课程1 bootstrap为什么这么火

    bootstrap课程1 bootstrap为什么这么火 一.总结 一句话总结:响应式,样式多,功能多. 1.bootstrap通过什么药实现响应式? 响应式web布局是让用户通过不同尺寸的浏览器都可 ...

  7. java生成UUID通用唯一识别码 (Universally Unique Identifier) 分类: B1_JAVA 2014-08-22 16:09 331人阅读 评论(0) 收藏

    转自:http://blog.csdn.net/carefree31441/article/details/3998553 UUID含义是通用唯一识别码 (Universally Unique Ide ...

  8. 使用Apache FtpServer搭建FTP服务器 [FlashFXP]

    <server xmlns="http://mina.apache.org/ftpserver/spring/v1" xmlns:xsi="http://www.w ...

  9. WP8.1:onedrive操作

    小梦今天给大家分享一下windows phone 8.1开发 onedrive中的一些操作: Windows phone 8.1 中 onedrive 登录 Windows phone 8.1 中 o ...

  10. 打开cad文件的几种方法

    转自原文 打开cad文件的几种方法 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeature ...