zoukankan      html  css  js  c++  java
  • 简单介绍一下原型和原型链

    搞了半天,原来原型和原型链就类似于 c++中的继承与派生,这个懂了就很好理解了。

    先定义:原型  每个对象都有一个方法,叫做隐式原型(原型),就是所谓的原型,原型就是指向其类的指针。目的就是为了方便对象自身找不到方法或属性的时候找父类的对象和方法。

    现在通俗理解: 对象找方法/属性,自身没有,找不到但是又要调用,就会去原型中寻找,(就是父类中寻找),原型就是指向父类的指针,找到了就调用。

    举个例子:teacher中有两个属性、(name和subject),表示的是老师的名字和所教授的课程,但是现在teacher需要调用一个teach方法(teacher.teach),

    好家伙,自身没有,怎么办,去原型里找,就是看父类(Teacher)里有没有。好家伙,Teacher类中有,所以就可以调用。打印出teacher.teach

    再来个图!

    再来原型链: 现在应该好理解了,原型链就是,找父类中的方法,没找到,但是父类中还有原型,再去找它的父类(Teacher的原型),好家伙,找到了,那就和原型一样调用,

    但是访问了两次原型,所以就叫原型的原型,原型链。

    举例:现在老师要喝水,怎么办?

    teacher.drink();

    teacher只能找了,看自身有没有喝水这个方法,好家伙没有!teacher对象中没有

    那咱们去原型找(__proto__),去父类找,好家伙,又没有!! 现在我们找到了 Teacher 这个类,还是没有

    那去原型的原型找,(__proto__.__proto__),父类的父类,好家伙,嘿嘿,找到了! 现在我们来到了Person这个类,它有!

    那我们现在 就可以调用了!  这一顿操作下来,就是原型链!!!

    有可爱的同学就要问了,那如果teacher要调用xxx方法/属性,但是都找了,都没找到呢?

    那这个时候,既然已经找到原型的原型了,还是没有找到,那我们也没办法了,说明它真的不能调用这个属性和方法。

    我们就返回null

    上图!

    有小伙伴就问了,那如果还没找到呢,

    那就返回null了。

  • 相关阅读:
    (转载) 随机数原理
    ZOJ 2588 Burning Bridges(求桥的数量,邻接表)
    生成不重复的随机数对(C/C++)
    比较两个文件是否相同(C/C++语言)
    计算文件大小(C/C++语言)
    (转载)Nim游戏博弈(收集完全版)
    将一串字符串全排列输出(回溯法)
    Linux中使用Crontab定时监测维护Tomcat应用程序的方法
    Nginx单向认证的安装配置
    非关系型数据库 2017-02-12 22:27 189人阅读 评论(2) 收藏
  • 原文地址:https://www.cnblogs.com/yqPhare/p/15700166.html
Copyright © 2011-2022 走看看