javascript中typeof操作符和constucor属性检测

  这篇文章主要介绍了javascript中typeof操作符和constucor属性检测的相关资料,需要的朋友可以参考下

  *#type.js

  代码如下:

  function Person(name, age) {

  this.name = name;

  this.age = age;

  }

  var d = {an: 'object'};

  var a = ['apple', 'banana'];

  var f = function() {};

  var s = 'David';

  var n = 33;

  var b = true;

  var o = new Object();

  var person = new Person('Mark', 22);

  console.log(typeof(d) + ': ' + d.constructor);

  console.log(typeof(a) + ': ' + a.constructor);

  console.log(typeof(f) + ': ' + f.constructor);

  console.log(typeof(s) + ': ' + s.constructor);

  console.log(typeof(n) + ': ' + n.constructor);

  console.log(typeof(b) + ': ' + b.constructor);

  console.log(typeof(o) + ': ' + o.constructor);

  console.log(typeof(person) + ': ' + person.constructor);

  运行$node type.js得

  代码如下:

  object: function Object() { [native code] }

  object: function Array() { [native code] }

  function: function Function() { [native code] }

  string: function String() { [native code] }

  number: function Number() { [native code] }

  boolean: function Boolean() { [native code] }

  object: function Object() { [native code] }

  object: function Person() { [native code] }

  可见, 使用typeof操作符和constucor属性检测对象类型返回值是存在差异的.

  如果变量是数组, typeof操作符返回object, constructor属性返回Array;

  如果变量是构造函数对象, typeof操作符返回object, constructor属性返回该构造函数

  每个变量都有其construcor属性, 这个属性不单单提供了这个是否对象, 还提供了这个对象是什么类型的对象. 总之, constructor属性保存了一个指向对象的构造函数, 无论它是自定义的还是原生类型的对象.

 

  有一点需要注意的是, 不同的浏览器对typeof操作符检测正则表达式会有所不同,IE和Firefox会返回'object'.

 

时间: 2024-10-31 20:35:06

javascript中typeof操作符和constucor属性检测的相关文章

javascript中typeof操作符和constucor属性检测_javascript技巧

*#type.js 复制代码 代码如下: function Person(name, age) {  this.name = name;  this.age = age; } var d = {an: 'object'}; var a = ['apple', 'banana']; var f = function() {}; var s = 'David'; var n = 33; var b = true; var o = new Object(); var person = new Pers

全面解析JavaScript中“&&”和“||”操作符(总结篇)_javascript技巧

1.||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true. alert(true||false); // true alert(false||true); // true alert(true||true); // true alert(false||false); // false 这个傻子都知道~~ 但是,从深层意义上来说的话,却有另一番天地,试下面代码 alert(0||1);//1 显然,我们知道,前面0意味着false,而后面1意味着true,

浅谈javascript中new操作符的原理_基础知识

javascript中的new是一个语法糖,对于学过c++,java 和c#等面向对象语言的人来说,以为js里面是有类和对象的区别的,实现上js并没有类,一切皆对象,比java还来的彻底 new的过程实际上是创建一个新对象,把新象的原型设置为构造器函数的原型,在使用new的过程中,一共有3个对象参与了协作,构造器函数是第一个对象,原型对象是二个,新生成了一个空对象是第三个对象,最终返回的是一个空对象,但这个空对象不是真空的,而是已经含有原型的引用(__proto__) 步骤如下: (1) 创建一

javascript中typeof的使用示例

 本文为大家介绍下javascript中typeof的使用,下面有个不错的示例,感兴趣的朋友可以参考下  代码如下: <html>  <head>  <title>javascript中typeof的使用</title>  <script>  //1.基本类型  var x = 123;  var y = "abc";  var z = true;  //alert(typeof x);//number  //alert(ty

面向对象-javascript中这两种对象属性有什么区别?

问题描述 javascript中这两种对象属性有什么区别? 第一种:function aaa(){} aaa.a=111; 第二种:function bbb(){} bbb.prototype.b=111; 我在csdn问过第一种,大部分人说属于面向对象的范畴. 但是我看了几篇js面向对象博客,都是用第二种原型的方式: 所以想知道这两种给对象添加属性的行为,在实际应用中有什么区别? 解决方案 如果把aaa,bbb作为方法来看,这两者没有区别. 如果把aaa,bbb作为类来看,那有区别. aaa.

javascript中typeof的使用示例_javascript技巧

复制代码 代码如下: <html> <head> <title>javascript中typeof的使用</title> <script> //1.基本类型 var x = 123; var y = "abc"; var z = true; //alert(typeof x);//number //alert(typeof y);//string //alert(typeof z);//boolean //2.引用类型,类型是

在JavaScript中typeof的用途介绍_基础知识

JavaScript 中的 typeof 其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现. 本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法. 阅读本文的前提是,你现在应该已经知道原始值和对象值的区别了. 检查一个变量是否存在,是否有值typeof在两种情况下会返回 "undefined": 1.变量没有被声明 2.变量的值是 undefined 例如: 复制代码 代码如下: > typeof undeclaredVariable === "u

JavaScript中typeof和instanceof的区别

  typeof   typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined. 可以使用typeof来获取一个变量是否存在,如if(typeof a != "undefined") .而不要去使用if(a)因为如果a不存在(未声明)则会出错. 对于Array,Null等特殊对象使用type

javascript中的altKey 和 Event属性大全_javascript技巧

下面给大家介绍javascript中altkey属性,具体介绍如下所示: altKey属性的定义和用法: 此属性返回一个布尔值.指示在指定的事件发生时,Alt键是否被按下并保持住了. 语法结构: event.altKey=true|false|1|0 浏览器支持: 1.IE浏览器支持此属性. 2.火狐浏览器支持此属性. 3.Opera浏览器支持此属性. 4.谷歌浏览器支持此属性. 实例代码: <!DOCTYPE html> <html> <head> <meta