var person = function(name){
this.name = name
};
person.prototype.getName = function(){
return this.name;
}
var zzz = new person('zzz');
console.log(zzz.getName());
console.log(zzz.__proto__ == person.prototype);// true
console.log(person.__proto__ == Function.prototype);// true
console.log(person.prototype.__proto__ == Object.prototype);// 不理解1
console.log(Object.__proto__ == Function.prototype);// true
console.log(Object.__proto__);// function 不理解2
console.log(Object.prototype.__proto__);// null 不理解3
console.log(Function.__proto__);// function 不理解4
console.log(Function.prototype.__proto__);// object 不理解5
一个对象的__proto__指向创建他的函数的prototype。根据这句话,上面的代码我有些理解了,但更多的是不理解。
请大神给讲解一下标注不理解的地方?

图片是自己的理解,自己总结以下几点:
所有prototype都是object,所以所有prototype的__proto__都指向Object的prototype。
Object的prototype的__prototype__特殊,指向null.
Function的__proto__也比较特殊,指向自己的prototype.
所以:
console.log(zzz.__proto__ == person.prototype);// true
console.log(person.__proto__ == Function.prototype);// true
console.log(person.prototype.__proto__ == Object.prototype);// true
console.log(Object.__proto__ == Function.prototype);// true
console.log(Function.__proto__ == Function.prototype);//true
console.log(Function.prototype.__proto__ == Object.prototype);//true
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
熟读并背诵<JavaScript高级程序>第六章
你的不理解1:
person.prototype是person的原型, 原型也是一个对象, 对象由Object创建,因此 person.prototype.__proto__ == Object.prototype
你的不理解2:
所有的函数都是由Function创建出来的,Object这个构造函数同样也是,因此Object.__proto__ 指向的是Fcuntion.prototype Function的原型式一个函数
你的不理解3:
一切始于null又终于null ! Object.prototype已经是原型链的终点了, 他继承自null
你的不理解4:
和不理解2一样
你的不理解5:
Function.prototype.__proto__指向的是 Object.prototype ..原型是个对象! Function特殊一点,他的原型是个函数..函数也是对象
原型链。。。
请参考:
JavaScript 世界万物诞生记 - 写代码的苏打饼
注:
No.1:即
Object.prototypeNo.2:即
Function.prototype[p]:即你说的
__proto__