请教老师一个关于继承的问题

请教老师一个关于继承的问题

具体问题见图 

http://img1.sycdn.imooc.com//climg/5af7fd910001545913650509.jpg

http://img1.sycdn.imooc.com//climg/5af7fda900012a8105020467.jpg

以上是我结合听老师讲的,再东查查西查查,总结了一下出来的.  

 首先,我想请教下老师,我的逻辑是否正确,也就是继承链在Function这里发生了变化!  其次,如果是的话我想知道图2中的标注处指向了哪里呢? 我console.log 打印出来了一大串,没看懂....

http://img1.sycdn.imooc.com//climg/5af7fe860001b38208440022.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
路大锤 2018-05-14 17:02:53

1.对象有属性__proto__,指向该对象的构造函数的原型对象。
2.方法除了有属性__proto__,还有属性prototype,prototype指向该方法的原型对象。你结合这个看下:https://www.zhihu.com/question/34183746

  • 提问者 小学生6年级 #1
    嘿嘿,同学,正确答案我最后已经得出来,就是下面两幅图. 慢慢自己悟出来的比较费劲. 知乎那个答案我个人觉得不好,建议你看下stackoverflow,上面两个回答结合一下更好.你就搜索这句话就有了Object.prototype === Object.__proto__.__proto__.
    2018-05-14 19:47:06
  • 提问者 小学生6年级 #2
    因为当我最后得出思路以后,顺着我思路百度一搜索,发现已经有一些类似的博客就是在说和我的想法一样的东西了,但是他们都没有把图贴出来.而只是贴了一下文章而已.
    2018-05-14 19:49:11
提问者 小学生6年级 2018-05-14 00:50:29

我去..顺着这个思路.我又接着测试了一下,居然发现

Object.__proto__ === Function.prototype ...也就是Object又是Function的继承.,...

Object.prototype === Object.__proto__.__proto__.

然后直接用这个式子百度上搜了一下,在stackoverflow上面就看到了提问,结合了一下,贴个我最终的想法图...不知道是不是这样,麻烦老师看看...直接看这个就好.

http://img1.sycdn.imooc.com//climg/5af869680001d79a04970616.jpg

此外,关于 Array 我之前提问过程中提出的也有问题,仔细想来 应该是http://img1.sycdn.imooc.com//climg/5af86cad0001c65004880577.jpg

老师要是看的话,就麻烦看看我这两幅图对不对就行啦,之前都忽略掉吧.谢谢老师

  • 提问者 小学生6年级 #1
    最奇葩的在于Function 和 Object ,虽然大家最终都源于Object.prototype. 但是Function的__proto__却指向他自己,这点好奇怪... 因为__proto__本来都应该指向的是自己的原型对象. 这样看来是不是可以认为连Object也是Function new出来的..... 这里有点绕.... 啥都可以被Function new出来 但是 Function.prototype.__proto__却指向了那个可以被自己new出来的Object的prototype的属性
    2018-05-14 01:01:42
提问者 小学生6年级 2018-05-13 18:41:03

http://img1.sycdn.imooc.com//climg/5af8147d0001a1ff07670056.jpg又做了一个测试,我发现任何一个对象  它们三个__proto__之后,一定是null, 可见任何一个类的prototype 的__proto__都会指向一个(东西), 然后这个东西 的__proto__ 就一定直接指向最原始的null.

紧接着我又做了个测试

http://img1.sycdn.imooc.com//climg/5af815470001079d08270028.jpg

发现居然两个是相等的,  然后我就大胆做一个猜测, 上述中的这个东西 首先它一定是一个对象,因为他没有prototype属性,只有__proto__,可见他是一个对象(往上的接口), 其次结合这一大串内容是不是,它可能是类似arguments的一个东西,存储着一整个原型链的长度,还有原型链中的每个链之类的?  还得需要老师解惑

  • 提问者 小学生6年级 #1
    无意中又发现了,所有的JS内置的对象. Object Array等. 它们的prototype 均等于 它们自身的__protyo__ 有意思
    2018-05-13 23:34:18
  • 提问者 小学生6年级 #2
    哦哦,明白一些了, 主要是后续章节操作DOM元素中老师提到的childNodes是非Array对象的实例提醒到了我.我可能之前陷入了误区.正确来说应该是不只是Function,其他所有的内置的都是既是对象又是类 ,而这些有个特点,以Array.prototype为例, 它的值等于 Array.__proto__ .(意味着它们都是某一层面上的顶端,不会再往上指了).然后Array.prototype.__proto__又指向了Object.prototype, 因此说JS中一切对象均源于Object确实是很有道理的
    2018-05-13 23:48:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师