A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

原型链的概念:
ECMAScript 中描述了原型链的概念,并将原型链作为实现继承的主要方法。其基本思想是利用原 型让一个引用类型继承另一个引用类型的属性和方法。简单回顾一下构造函数、原型和实例的关系:每 个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型 对象的内部指针。那么,假如我们让原型对象等于另一个类型的实例,结果会怎么样呢?显然,此时的 原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数 的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实 例与原型的链条。这就是所谓原型链的基本概念
原型链示例
[JavaScript] 纯文本查看 复制代码
// 构造函数
      function Foo(name, age) {
        this.name = name
      }

      Foo.prototype.alertName = function() {
        alert(this.name)
      }

      // 创建示例
      var f = new Foo('张三')
      f.printName = function() {
        console.log(this.name)
      }
      // 测试
      f.printName()
      f.alertName()
      /*
        f.printName() 构造函数上有
        f.alertName() 构造函数上没有,继续到原型上查找
        
        Foo上找 -> Foo.prototype上找 -> Object.prototype -> null(避免死循环)
        
      */

就是从实例对象往上找构造这个实例的相关的对象,然后这个关联的对象再往上找,它又有创造它的上一级原型对象,以此类推,一直到object.prototype原型对象终止,这个链条就断了,也就是说object.prototype是链条的顶端。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马