一、数组去重
var arr = [1, 2, 1, 1, 1, 2, 3, 4, 4, 5, 3,
1,7,8,8,7];
Array.prototype.unique = function ()
{
var obj = {},
len = this.length,
arr = [];
for (var i = 0; i < len; i++) {
if (!obj[this[i]]) { //当前
位置=undefined
obj[this[i]] = this[i];
arr.push(this[i]);
}
}
return arr;
}
二、判断参数type
function type(target) {
var temp = {
"[object Array]": "array",
"[object Object]": "object",
"[object Number]": "number -
object",
"[object Boolean]": "boolean
- object",
"[object String]": "string -
object",
}
if (target ==null){
return "null";
}
if(typeof(target) == "object"){
// 判断参数类型是否为引用值 数组、对象、包装
类
var str =
Object.prototype.toString.call(target);
return temp[str];
}else{
return typeof(target);
}
}
三、try...catch,es5标准模式
try{
//当try中代码出现错误,try不抛出错误,不会执行
错误后的try里面的代码
}catch(e){
//
}
Error.name 的六种值对应信息:
1.EvalError:eval()使用与定义不一致
2.RangeError:数值越界
3.ReferenceError:非法或不能识别的引用数值
4.SyntaxError:发生语法解析错误
5.URLError:URL处理函数使用不当
四、es5 严格模式
不再兼容3的一些不规则语法。使用全新的es5规范。(推荐局部使用)
es3.0和es5.0产生冲突的部分
es5.0严格模式 那么es3.0和es5.0产生冲突的部分用5.0
1."use strict";//es5.0严格模式的启动 写在最顶端(函数内也是第一行)
2.使用字符串,不会最不兼容严格模式的浏览器产生影响
3.不允许使用with(参数){}:改变作用域链,把参数当作作用域的最顶端
4.变量赋值前必须声明,局部的this预编译时this不再指向window,必须赋值,赋值什么就是什么,拒绝重复属性和参数。
5.eval:把字符串当成代码执行