Javascript 中数据类型判断 typeof、 instanceof
程序员文章站
2022-06-04 21:46:28
...
1、typeof 运算符只能检测出值的类型
- number、string、Boolean、undefined、object,
- 在检测对象类型(null、{ } 、[ ] 、undefined)时,一律返回 object,无法明确区分当前对象所属类型
- typeof可以判断所有js中的基本数据类型(Null,Undefined,Boolean,String,Number),虽然null使用typeof返回的是object,但是不影响它的基本使用。但是如果想要判断array,null等,它就起不到作用了。
-
var obj = { name: 'zhangxiang' }; function foo() { console.log('this is a function'); } var arr = [1,2,3]; console.log(typeof 1); // number console.log(typeof '1'); //string console.log(typeof true); //boolean console.log(typeof null); //object console.log(typeof undefined); //undefined console.log(typeof obj); //object console.log(typeof foo); //function console.log(typeof arr); //object
2、instanceof 运算符, a instanceof b , a的类型是b吗?
instanceof运算符用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性。
语法:object instanceof constructor
其实它适合于判断自定义的类实例对象,而不是用来判断原生的数据类型。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// instanceof 运算符
var a=[];
console.log(a instanceof Array); //true
console.log([] instanceof String); // false
console.log([] instanceof Object) //true
console.log(null instanceof Object) //false
</script>
</body>
</html>
参考链接:https://blog.csdn.net/weixin_30500473/article/details/97506239
// a.html
<script>
var a = [1,2,3];
</script>
//main.html
<iframe src="a.html"></iframe>
<script>
var frame = window.frame[0];
var a = frame.a;
console.log(a instanceof Array); // false
console.log(a.contructor === Array); //false
console.log(a instanceof frame.Array); // true
</script>
面向对象编程语言中,所有对象都是根据object (基本类衍生出来的),所有的对象都是object类的实例对象。