首页 > 网站 > WEB开发 > 正文

JavaScript类型检测, typeof操作符与constructor属性的异同

2024-04-27 14:12:42
字体:
来源:转载
供稿:网友

javaScript类型检测, typeof操作符与constructor属性的异同

*#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属性检测对象类型返回值是存在差异的.

  1. 如果变量是数组, typeof操作符返回object, constructor属性返回Array;
  2. 如果变量是构造函数对象, typeof操作符返回object, constructor属性返回该构造函数

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

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表