javascript技巧
- - ITeye博客oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键. < table border oncontextmenu=return(false)>< td>no< /table> 可用于Ta bl e. < body onselectstart="return false"> 取消选取、防止复制.
本文内容整理自网络。
主要列举了使用JavaScript时应该注意的一些技巧。
1 变量使用前,需要使用var关键字声明,避免使用全局变量;
2 尽量使用===(!==),而不用==(!=);
===(!==)操作不执行转换,在速度上被认为优于==(!=)
3 使用闭包实现私有变量;
4 语句结尾不省略分号;
5 构造函数首字母大写,通过new关键字调用;
6 typeof、instanceof和constructor的一些坑
var arr = []; typeof arr; //返回“object" arr instanceof Array //返回true arr.constructor(); //返回[] arr.constructor; //返回Array()
7 立即执行匿名函数
(function(a, b){ return a + b; })(10, 20);
8 获取数组中的随机一项
var items = [12, 548 , 'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' , 2145 , 119]; var randomItem = items[Math.floor(Math.random() * items.length)];
9 在某个范围间产生一个随机数
function getRondomNumBetween(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
10 生成一个随机的数字字母字符串
function generateRandomAlphaNum(len) { var rdmstring = ""; for( ; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdmString.substr(0, len); }
11 打乱一个数组顺序
var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; numbers = numbers.sort(function(){ return Math.random() - 0.5});
12 在String的原型对象上添加trim方法
String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");};
13 将一个数组append到另一个数组上
var array1 = [12 , "foo" , {name: "Joe"} , -2458]; var array2 = ["Doe" , 555 , 100]; Array.prototype.push.apply(array1, array2); /* array1 will be equal to [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */
数组的concat可以实现两个数组的拼接,但它返回一个新的数组。这里是直接改变array1.
14 将arguments对象转成一个数组
var argArray = Array.prototype.slice.call(arguments);
15 判断是否为数字number
function isNumber(n){ return !isNaN(parseFloat(n)) && isFinite(n); }
16 判断是否是数组
function isArray(obj){ return Object.prototype.toString.call(obj) === '[object Array]' ; }
17 获取数组中的最大值或最小值
var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; var maxInNumbers = Math.max.apply(Math, numbers); var minInNumbers = Math.min.apply(Math, numbers);
18 清空数组
var myArray = [12 , 222 , 1000 ]; myArray.length = 0; // myArray will be equal to [].
19 使用splice而不要使用delete删除数组中的元素,delete只是将相应的项变为undefined,并没有将其从数组中移除,也就不影响数组的长度。
20 数组的length不是一个只读属性,可以对其进行设置,若设置值小于原来的数组长度,则原来的数组会被截短,只保留length设置的个数;若设置值大于原来的数组长度,则原来的数组会被扩充,扩充的各元素为undefined。