javascript - 关于js原型链的疑问
ringa_lee
ringa_lee 2017-04-11 12:09:03
[JavaScript讨论组]
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。根据这句话,上面的代码我有些理解了,但更多的是不理解。

请大神给讲解一下标注不理解的地方?

图片是自己的理解,自己总结以下几点:

  1. 所有prototype都是object,所以所有prototype的__proto__都指向Object的prototype。

  2. Object的prototype的__prototype__特殊,指向null.

  3. 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

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
PHP中文网

熟读并背诵<JavaScript高级程序>第六章

PHPz

你的不理解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.prototype

  • No.2:即Function.prototype

  • [p]:即你说的__proto__

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号