Object instanceof Function //true
//上述结果的原因:
Object.prototype.constructor; //function Object(){} <===> Object.prototype.constructor ===> Object.prototype = new Object();
//1. 因为有了new Object()的过程,而这个过程会让其产生的实例维护constructor和__proto__属性,具体的来说,
//一定会维护一个constructor的属性,是否会有__proto__属性需要要看new的过程(除了Global, Function, Object之外的所有过程()都会维护__proto__属性:可能有误)。
Object.prototype.constructor.constructor; //function Function(){}
//2. 任何的函数(包括所有内置对象(除了Global对象)的构造函数)都是由new Function()之后并添加额外的属性和行为之后得到的;
//请务必知道的是var fun = new Funtion(); //typeof fun ===> "function":这起码说明new的过程不一定说明一定产生的是一个object类型的变量。
Object.constructor: //function Function(){}; //上面两个分步骤得到的结果
//3. 因此综上所述,Object是派生自Function的,是由Function构造函数添加额外的行为和属性之后得到的一个类。
Object.prototype.__proto__ ; //null;
//4. 由上面可以知道任何的函数到最后都是通过通过new Object之后赋给相应函数.prototype属性之后作为根节点,也即是原型链的顶端就是Object类;
//在此之所以可以逐步通过.constructor的方式来获取构造函数,是因为一直存在new的过程。因此prototype.constructor和__proto__.constructor都是可以说明继承关系的。
//也即是自定义函数的原型链中,在该函数.prototype和最后一级Object()之间是一直可以通过__proto__来看原型链中的每一个层级的,也可以通过该函数实例对象.__ptoto__
//之后的每一级来查看其原型链中的每一级的。
Function instanceof Object //true