-
类型检测
- 类型检测优先使用
typeof。对象类型检测使用instanceof。null或undefined的检测使用== null。
// string typeof variable === 'string' // number typeof variable === 'number' // boolean typeof variable === 'boolean' // Function typeof variable === 'function' // Object typeof variable === 'object' // RegExp variable instanceof RegExp // Array variable instanceof Array // null variable === null // null or undefined variable == null // undefined typeof variable === 'undefined' - 类型检测优先使用
-
类型转换
- 转换成
string时,使用+ ''。
num + '';- 转换成
number时,通常使用+。
+str;string转换成number,要转换的字符串结尾包含非数字并期望忽略时,使用parseInt。
var width = '200px'; parseInt(width, 10);- 使用
parseInt时,必须指定进制。
parseInt(str, 10);- 转换成
boolean时,使用!!。
var num = 3.14; !!num;number去除小数点,使用Math.floor/Math.round/Math.ceil,不使用parseInt。
var num = 3.14; Math.ceil(num); - 转换成
-
其它
for in遍历对象时, 使用hasOwnProperty过滤掉原型中的属性。
var newInfo = {}; for (var key in info) { if (info.hasOwnProperty(key)) { newInfo[key] = info[key]; } }- 数组排序使用
sort。
function sortNumber(a,b) { return a - b } // 声明数组建议 var arr = [] // 声明指定长度数组使用下面的方式 var arr = new Array(6) arr[0] = "10" arr[1] = "5" arr[2] = "40" arr[3] = "25" arr[4] = "1000" arr[5] = "1" console.log(arr); // (6) ["10", "5", "40", "25", "1000", "1"] console.log(arr.sort(sortNumber)); // ["1", "5", "10", "25", "40", "1000"]- 类的继承方案,实现时需要修正
constructor。
/** *构建类之间的继承关系 *@param {Function} subClass 子类函数 *@param {Function} superClass 父类函数 */ var extend = function (subClass, superClass) { var F = function() {}; F.prototype = superClass.prototype; subClass.prototype = new F(); subClass.prototype.constructor = subClass; subClass.uber = C.prototype; // uber 是在模拟 class 时用来表示 super 的(因为super是关键字所以不能直接用)
}
```