javascript的数据检测总结
javaScript的数据检测
1.typeof
1.1-第一题
检测数据类型的运算符
typeof 12;//'number'
typeof "ss"//'string'
...
typeof null;//object
typeof new RegExp('');//object
检测的结果又这六种:	number string undefined object function boolean
设置b的默认值
方式一:
function(a,b){
	if(typeof b==="undefined"){
		b=0;
	}else{
		b=b;
	}
}
方式2
	b=b||0
有区别
function(10,false);
//这个时候方式二的b的值也是0
//方式一的b的值是false
1.2第二题
function fn(callback){
	//typeof callback==="function"?callback():null;
	callback&&callback();
}
fn(functtin(){
	...
});
2.instanceof
检测某一个实例是否属于某个类
console.log([].instanceof Array);//true
局限性:
1 .不能用来处理和检测字面量方式创建出来的基本数据类型值
对于基本数据类型来说,字面量创将建出来的结果和实例创建出来的结果是有一定区别的;
- 严格意义上讲,只有实例创建出来的结果才是标准数据类型值,也是标准的Number的一个实例
 - 对于字面量方式创建出来的结果是基本数据类型,不是严谨的实例,但由于js的松散的特点,导致其可以使用 Number.prototype的方法
 
console.log(1 instanceof Number);//false
console.log(new Number(1) instanceof Number);//true
2.instanceof的特性:只要在当前实例的原型链上,其检测结果都为true
[] instanceof Array//true
[] instanceof Object//true
fnunctin fn(){...}
fn instanceof Function//true
fn instanceof Object//true
3.在类的原型继承中,instanceof检测出来的结果未必准确
function Fn(){
	...
}
Fn.prototype = new Array();//原型继承,让子类的原型指向父类的一个实例
let f =new Fn();
f instanceof Array;//true
f instanceof Function;//true
3.constructor
构造函数,作用和instanceof非常相似
let arr=[];
console.log(arr.constructor === Array);//true
console.log(arr.constructor === RegExp);//false
constructor可以用来检测基本数据类型
let a = 250;
console.log(a.constructor === Number);//true
constructor和instanceof检测Object的结果不一样
let reg =/\d/;
console.log(reg.constructor === RegExp);//true
console.log(reg.constructor === Object;//false
//false的原因是因为先找私有的,私有没有才会去找原型,私有已经有了,所以...
局限性:我们可以把类的原型进行重写,在重写的过程中很有可能把之前的constructor覆盖了,这样检测的结果就是不准确的
function Fn(){
	...
}
let f =new Fn();
console,log(f.constructor);//返回的是当前类的本身Fn
//继承后
Fn.prototype = new Array();//原型继承,让子类的原型指向父类的一个实例
console,log(f.constructor);//变成了Array
null和undefined他们的所属类是Null和Undefined,但是浏览器不让用
4.Object.prototype.toString.call()--------- 一个神奇的方法
首先获取Object原型上的toSting方法,然后让其执行,并且改变方法中的this关键字
1.对于Number、 String 、 Boolean 、 Array 、RegExp 、 Date 、 Function,他们的原型上的toString方法都是把当前的数据类型转为字符串
(1).toString();//"1"
[].troString();//''
[1,2,3].toString()//"1,2,3"
(false).toString();//"fales"
...2.Math和{ }的toString执行的是Object.prototype上的toString方法
作用是:返回当前执行主体(方法中的this)所属类 的详细信息Math.toSting();//[object Math]
{}.toString();//[object Object]
//[..]中的第一个object代表大行前实例是对象类型的数据(固定死的)
//第二个参数表示的是第一个参数所属类是谁
根据这些个特点就有了
Object.prototype.toString.call(要检测的类或实列);
 console.log(Object.prototype.toString.call([]));//[object Array]												
											javascript的数据检测总结的更多相关文章
- JavaScript数据检测
		
前言: 随着编程实践的增加,慢慢发现关于数据类型的检测至关重要.我认为程序就是为了处理数据和展示数据.所以,数据的检测对于编程来说也至关重要.因为只有符合我们预期的输入,才可能产生正确的输出.众所周知 ...
 - JavaScript中数据类型转换总结
		
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
 - 细读 php json数据和JavaScript json数据
		
关于JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2.Javascript原生支持,后台语言几乎全部支持: 3.轻量级数据格式,占用字符数量极少,特别适合互联网传递: 4.可读性较强 5.容 ...
 - 应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测
		
应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测 Real-Time Anomaly Detection for Streaming Analytics Subutai Ahmad SAHM ...
 - 再谈JavaScript的数据类型问题
		
JavaScript的数据类型问题已经讨论过很多次了,但许多人还有许多书仍然沿用着错误的.混乱的一些观点,所以就再细讲一回. 提及这个讨论的原因在于argb同学在我的MSN博客上的一段回复,又更早的起 ...
 - JavaScript实现数据的双向绑定
		
接触到Angulr.js和Vue.js后,提到最多的就是双向绑定 下面将用JavaScript实现数据的双向绑定 <!DOCTYPE html> <html> <head ...
 - hisql 高级功能数据检测将错误数据拦截在系统外  一
		
hisql github源码下载 git clone https://github.com/tansar/HiSql.git 在设计第二范式数据库时经常会把可能重复的数据单独做一种表关联,但是在写入表 ...
 - Javascript之类型检测
		
一.检测原始(基本数据:字符串.数字.布尔.null.undefined)类型. 用typeof检测原始类型:1.对于字符串,typeof返回"string"; 2.对于数字,ty ...
 - JavaScript的数据类型问题总结
		
一 JS中有哪些数据类型? -- 共 6 种数据类型,其中 5 种基本数据类型Undefined,Null,Boolean,Number和 String,1 种复杂数据类型Object.因为EC ...
 
随机推荐
- [UE4]角色、动画蓝图、动画蒙太奇、动画之间的调用关系
			
一.在“角色”中设置要使用的“动画蓝图” 二.在“动画蓝图”中使用“动画”和“混合动画” 三.在“混合动画”中,也可以使用“动画” 四.在角色中使用“动画蒙太奇”
 - seaborn可视化特征的相关性
			
import seaborn as sn sn.heatmap(trainX.corr(),vmax=1,square=True)
 - X-Requested-With
			
最近工作中发现,使用angular $http跨域的时候,虽然后台已经配置了跨域允许,但是还是报错. 查资料发现,angular $http 的request的请求头中,默认有: Access-Con ...
 - hive 锁
			
HiveQL是一种SQL语言,但缺少udpate和insert类型操作时的行,列或者查询级别的锁支持,hadoop文件通常是一次写入(支持有限的文件追加功能),hadoop和hive都是多用户系统,锁 ...
 - three添加和移除对象
			
创建场景在第一章的地方就讲过怎么样创建一个最基本的场景,这里不重复了html:部分 <!doctype html><html lang="en"><h ...
 - 树结构之JavaScript
			
对于数据结构“树”,想必大家都熟悉,今儿,我们就再来回顾一下数据结构中的二叉树与树,并用JavaScript实现它们. ps:树结构在前端中,很多地方体现得淋漓尽致,如Vue的虚拟DOM以及冒泡等等. ...
 - 视频地址blog加密
			
/* JS部分 没处理兼容什么的 */ var id='<?php echo $_GET['id'];?>'; var video = document.getElementById(&q ...
 - 前端-BootStrap
			
bootstrap 英 /'buːtstræp/ 美 /'bʊt'stræp/ n. [计] 引导程序,辅助程序:解靴带 关于 BootCDN BootCDN 是 Bootstrap 中文网支持并维护 ...
 - 压缩文件tar.gz和zip之间的区别
			
我们在开发的时候通常要先下载相关的软件或者是源码,或者是jar包.在下载东西的时候总是碰见后缀是.tar.gz和.zip的问题,搞不清楚是怎么回事,不晓得下载哪个文件才是对自己有用的.现在我知道了,其 ...
 - 管道限流利器pv
			
pv 是什么 可不是 page view,是pipe viewer,管道偷窥器的缩写.这个东西的源站点在google code上,需要的话可以访问pv 的官网 . 这个东西的官方手册页(man pv或 ...