上图引用自JavaScript世界观诞生记
本文将围绕上图内容展开,文中内容仅为个人理解
var a={};
console.log(a.constructor ===Object);//true
console.log(a.__proto__===Object.prototype);//true
只有构造函数有prototype属性,创建的对象只有__proto__属性。并且用构造函数生成对象的__proto__属性指向prototype本身。
图中的特殊对象No.1本质为Object.prototype,是对象Object的所有属性方法。
console.log(Object.constructor.constructor ===Object.constructor );//true
console.log(Object.__proto__.__proto__===a.__proto__);//true
console.log(Function.__proto__ === Function.prototype);//true
由此可将NO.2视为一个由Object构造函数生成的一个特殊对象。No.2这个特殊对象还是一个特殊构造函数,产生了js的基础数据类型。
所以构造函数的构造函数的构造函数永远都指向其本身的构造函数。
网友评论