Javascript typeof 和instanceof

1、在Javascript脚本中,如何判断一个变量是什么类型呢?

使用typeof可以来判断变量的类型,类型有object, string, number, boolean,function, undefined。

b= typeof(a)

a=Date,Function,Math,String,Option时, b=function;

a=不存在的对象时,b=undefined。

[javascript]

  1. //测试1  
  2. function test1(){  
  3.         var a = {a:‘test’,b:‘is’,c:‘ok’};  
  4.         var f = function(){  
  5.             alert(‘a’);  
  6.         }  
  7.   
  8.         var s = ‘test is ok’;  
  9.   
  10.     var d = 1234;  
  11.     var v;  
  12.       
  13.         document.writeln(typeof a);  
  14.         document.writeln(typeof f);  
  15.         document.writeln(typeof s);  
  16.         document.writeln(typeof d);  
  17.         document.writeln(typeof v);  
  18. }  


2、如何判断变量的数据类型?这个问题实际上等同于问,该变量是什么类的实例

使用instanceof可以判断一个变量的数据类型,见下面的例子:

[javascript]

  1. //测试2  
  2. function test2(){  
  3.         var a = [];  
  4.         var d = new Date();  
  5.         var o = {a:‘test’,b:‘is’,c:‘ok’};  
  6.         var F = function(){  
  7.           
  8.         }  
  9.           
  10.         var of = new F();  
  11.           
  12.         document.writeln(a instanceof Array);  
  13.                document.writeln(d instanceof Date);  
  14.         document.writeln(o instanceof Object);    
  15.         document.writeln(F instanceof Function);  
  16.         document.writeln(of instanceof F);        
  17.           
  18.   
  19. }  
  20.   
  21.     test2();  

上述例子中的结果均为true,其中of判断其是否是function F的实例,这样的功能非常有用,可用于Javascript面向对象编程中,对象是否是某个自定义类的判断。

3、构造器

在Javascript中对象有构造器方法(均为函数),用于返回器原型,指向函数本身,而非包含函数名的串。

[javascript]

  1. //测试3  
  2. unction test3(){  
  3.     var a = [];  
  4.     var d = new Date();  
  5.     var o = {a:‘test’,b:‘is’,c:‘ok’};  
  6.     var F = function(){  
  7.           
  8.         }  
  9.           
  10.         var of = new F();  
  11.           
  12.     document.writeln(a.constructor + ‘<br>’);  
  13.         document.writeln(d.constructor + ‘<br>’);  
  14.         document.writeln(o.constructor + ‘<br>’);   
  15.         document.writeln(F.constructor + ‘<br>’);  
  16.         document.writeln(of.constructor + ‘<br>’);          
  17. }  

结果为:

function Array() { [native code] }
function Date() { [native code] }
function Object() { [native code] }
function Function() { [native code] }
function(){ }

标签