原型对象的原型对象
通过前面的学习可知,原型对象也是对象,那么这个对象应该也会有一个原型对象存在。为了确认原型对象有没有原型对象,可以用如下代码来测试。
1 function Person() {}
2 // 查看原型对象的原型对象
3 console.log(Person.prototype.__proto__);
4 // 查看原型对象的原型对象的构造函数
5 console.log(Person.prototype.__proto__.constructor);
上述代码执行后,在控制台就会看到一个打印出来的对象,这个对象的构造函数是Object()。由此可见,Person.prototype.proto这个对象其实就是Object.prototype对象,这个对象是所有Object实例对象的原型对象,下面我们通过代码进行验证。
1 function Person() {}
2 console.log(Person.prototype.__proto__ === Object.prototype); // true
3 var obj = {};
4 console.log(obj.__proto__ === Object.prototype); // true
如果继续访问Object.prototype的原型对象,则结果为null,如下所示。
1 console.log(Object.prototype.__proto__); // 输出结果:null
由此可见,在JavaScript中,原型对象与原型对象是像链条一样连起来的,这个链条的尽头的对象就是Object.prototype。