JavaScript类型操作以及一些规范
2024-08-29 06:31:02
类型检测
- 类型检测优先使用
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是关键字所以不能直接用)
}
```
最新文章
- Nginx学习记录
- php中ajax跨域请求---小记
- 谈谈 Mifare Classic 破解
- Eclipse使用jre的原理与配置
- eclipse,myeclipse svn 和jadclipse 反编译插件 及安装
- 在mac上安装hadoop伪分布式
- 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇01:播放序列动画》
- 【原】GO 语言常见错误
- Linux配置vpn
- Lucas定理的理解与应用
- HW2.17
- 进击的新版NavMesh系统:看我飞檐走壁
- AI xavier算法
- Shell编程实战
- Python设计模式 - UML - 组合结构图(Composite Structure Diagram)
- std::lock_guard/std::unique_lock
- axios的学习与使用
- Dalvik指令备忘
- MySQL USING 和 HAVING 用法
- JVM类加载机制总结