美文网首页
typeof,instanceof和constructor

typeof,instanceof和constructor

作者: Gnomo | 来源:发表于2017-10-16 10:54 被阅读7次

title: typeof,instanceof和constructor
date: 2017-10-12 17:39:26
tags: js


(1)数据类型

7中基础数据类型6中原始类型以及Object类型
String,Number,Boolean,Null,Undefined,Symbol

(2)如何判断数据类型

(2.0)
typeof 判断基础数据类型 返回字符串

typeof(1) //"number"
typeof(true) //"boolean"
typeof('hello') //"string"
typeof(null) //"object"
typeof(undefined) //"undefined"
对于对象类型只能得到"object"

注意以下几处的用法:

typeof(null) //"object"
typeof(NaN) //"number"
typeof(typeof 1) //"string"
函数对象function setName(){} typeof(setName) //"function"
typeof Math.sin === "function";
typeof 1/0 === "NaN"
typeof alert === "function"
在 IE 6, 7 和 8 中,大多数的宿主对象是对象,而不是函数,例如:
typeof alert === "object"

(2.1)
instanceof 判断引用数据类型 返回true或者false
测试一个对象在其原型链上是否存在一个构造函数的prototype属性

var myArr = new Array();
console.log(myArr instanceof Array); //true
function C(){} 
function D(){} 
var o = new C();
// true,因为 Object.getPrototypeOf(o) === C.prototype
o instanceof C;

判断数据类型是否是数组

Array.isArray([]) //true
Object.prototype.toString.call([]) === "[object Array]" //true

(2.2)
object.constructor 返回创建实例对象的Object构造函数的引用,为只读的原始类型。

var son = 5;
console.log(son.constructor.name); //Number
var myArr = new Array();
console.log(myArr.constructor.name); //Array
console.log(myArr.constructor===Array); //true

示例:

function myFunction(name){
console.log(name)
}; 
var myfun = new myFunction('zsx');
console.log('myfun.constructor is '+ myfun.constructor);
//zsx
//myfun.constructor is function myFunction(name){console.log(name)}
console.log('myfun.constructor is '+ myFunction.prototype.constructor);
//myfun.constructor is function myFunction(name){console.log(name)}

相关文章

网友评论

      本文标题:typeof,instanceof和constructor

      本文链接:https://www.haomeiwen.com/subject/qgeoyxtx.html