*#type.js
Funktion Person(Name, Alter) {
this.name = name;
this.age = Alter;
}
var d = {an: 'object'};
var a = ['Apfel', 'Banane'];
var f = function() {};
var s = 'David';
var n = 33;
var b = true;
var o = new Object();
var person = neue 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得
Objekt: function Object() { [nativer Code] }
Objekt: function Array() { [nativer Code] }
Funktion: function Function() { [nativer Code] }
string: function String() { [nativer Code] }
Nummer: Funktion Number() { [nativer Code] }
boolean: function Boolean() { [nativer Code] }
Objekt: function Object() { [nativer Code] }
Objekt: function Person() { [nativer Code] }
可见, 使用typeof操作符和constucor属性检测对象类型返回值是存在差异的.
如果变量是数组, Typ des Objekts, Konstruktor und Array;
如果变量是构造函数对象, Typ des 操作符返回Objekts, Konstruktor属性返回该构造函数
每个变量都有其construcor属性, 这个属性不单单提供了这个是否对象, 还提供了这个对象是什么类型的对象. 总之, Konstruktor属性保存了一个指向对象的构造函数, 无论它是自定义的还是原生类型的对象.
有一点需要注意的是, 不同的浏览器对typeof操作符检测正则表达式会有所不同, IE和Firefox会返回'object '.
好了,今天内容就先到这里了,小伙伴们如有疑问,就在下方留言吧.