本文主要是介绍JS中typeof和instanceof的用法小解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
javascript中,测试数据类型用到typeof 和 instanceof.
1. typeof一般测试基本类型(Undefined、Null、Boolean、Number、String),对引用类型一律返回object(Function引用类型返回Function)
测试基本类型:
var a="oo";var b=true;var c="";var d=null;var e=10;alert(typeof(o));//undefinedalert(typeof(a)); //stringalert(typeof(b)); //booleanalert(typeof(c));//stringalert(d==null); //truealert(typeof(e)); //number
测试引用型:
var obj1=new Object();var obj2=new Array();var obj3=new Date();var obj4=new Function();var obj5=new Boolean(); var obj6=new Number();var obj7=new String(); alert("obj1 "+typeof(obj1)); //objectalert("obj2 "+typeof(obj2)); //objectalert("obj3 "+typeof(obj3));//objectalert("obj4 "+typeof(obj4));//functionalert("obj5 "+typeof(obj5));//objectalert("obj6 "+typeof(obj6));//objectalert("obj7 "+typeof(obj7));//objectalert(obj4 instanceof Function);//truealert(obj4 instanceof Object);//true
2. instanceof测试引用类型(Object、Array、Date、RegExp、Function、基本包装类型(Boolean、Number、String))
2.1 基本包装类型
基本类型值拥有方法操作 和 基本包装类型的出现,前者促进了后者,后者实现了前者。
var s1="some clothes";var s2=s1.substring(2);alert(s2);//me clothes
在后台自动实现以下过程:
<1>自动创建String类型的一个实例 (中间出现的一个人物,任务是 暗中替s1调用方法)
<2>在实例上调用方法 ,返回值给s2
<3>销毁实例(完成使命就销毁了)
普通的引用类型和基本包装类型的主要区别就是 对象的生存期。自动创建的普通包装类型的实例存在一会就被销毁了,而手动new的一个平常的引用类型的实例,只要执行流还在当前作用域,它就一直保存在内存中。
2.2 测试
例子1 instanceof 可判断对象是不是另一个对象的实例,进一步判断继承关系
function Fa(){}function Son(){}Son.prototype=new Fa();var obj=new Son();alert("obj是否是Son的实例? "+(obj instanceof Son));//truealert("obj是否是Fa的实例? "+(obj instanceof Fa));//true
例子2 寄生构造函数模式下,测试o是不是people的实例
function people(name,age,job){o=new Object();o.name=name;o.age=age;o.job=job;o.sayName=function(){alert(this.name);};return o;}var person=new people("zhang","19","student");person.sayName();alert(o instanceof people);//返回的对象o不是people的实例,但是是Object的实例
例子3 字符串传入Object构造函数,自动创建String实例
var obj=new Object("one day");alert("obj instanceof String");//true
后台自动为"one day"
创建一个String实例,赋值给obj后销毁
3. 需要补充的以后想到了再补吧,写了这么多,除了一丝丝疲劳就是成就感啦
这篇关于JS中typeof和instanceof的用法小解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!