在javascript中我们常见的创建对象方法为
var Person = {
name : "Ruger",
age : 20
};
console.log(Person.name + " " + Person.age);//Output Ruger 20
也可以写作
var Person = new Object({name:"Ruger",age:20})
console.log(Person.name + " " + Person.age);
我们心中不禁会思考这两种创建对象方式有什么不同呢?
在javascript中每个对象在被创建之后(代码运行中被赋值后) 都会默认添加一个constructor构造器,通过构造器可以发现
var o = {};
var p = new Object();
console.log(o.constructor);//Output function Object() {}
console.log(p.constructor);//Output function Object() {}
console.log(o.constructor === p.constructor);//Output true
这组例子说明 这两种创建方式是完全相同的,我们内心就不禁又会思考Object函数对象的构造器是什么呢
console.log(Object.constructor)//Output function Function() {}
那Function函数对象的构造器又是什么呢
console.log(Function.constructor)//Output function Function() {}
我们会惊奇的发现,他的构造器居然是他本身,这说明Function函数对象是所有对象构造器的最顶层
构造器是什么呢???
构造器 我认为是一个类,当我们创建一个对象他相当于是Object对象的一个实例,而Object本身是Function对象的一个实例,我们利用instanceof判断一个对象是一个类的实例
var o = {};
console(o instanceof Object);//true
console(Object instanceof Function);//true
console(o instanceof Function)//false