美文网首页
面向对象--第四弹原型链

面向对象--第四弹原型链

作者: 赵BW | 来源:发表于2017-04-29 12:00 被阅读0次

原型链式是个好东西,我们可以靠这个东西实现继承和派生。
我们需要明白一些概念,原型,原型对象,原型链。我们一个个的来看。

原型

原型(prototype):每个函数都有这个属性。这个属性指向一个对象,然后这个对象有个专业的名字叫:原型对象。


原型对象:其实就是一个对象。只是这个对象是私有的。只有构造函数可以找到这个对象。有两个特殊的属性: constructor、proto

说这么多,举个例子,画一张图,就知道了。

       function Person(){
              this.name = "zhaobw";
              this.age = "22";
       }
原型图
  • 如上图所示,函数Person()的prototype指向一个原型对象Person.prototype。这个原型对象的属性constructo又指向了函数person。
    我们在控制台打印,看如何可以访问到原型对象。

     function Person(){
          this.name = "zhaobw";
          this.age = "22";
      }
      console.log(Person.prototype);
      console.log(Person.prototype.constructor);
    
控制台输出
  console.log(Person.prototype);
  • 输出的是构造函数。

    console.log(Person.prototype.constructor);
  • 输出的是原型对象的constructor的。

基本的概念我们都明白了。接下来说重点。原型链。我们可以根据这个东西实现很多有意思的功能。

原型链

原型链就是个链子。它就像一个链子,把对象、构造函数串联起来。我们可以通过这个链子访问到所有的对象和构造函数。

说这么多,不看一个例子,画一张图。这一次我们弄一大的。详细点的
例子

   function Person(){
        this.name = "zhaobw";
        this.age = "22";
    }
    var student = new Person();
原型图.png

看完图后是不是很晕?晕,就对了。
我说说我的想法。js的世界,你可以这样理解,这个世界的上帝有两个,一个是function,一个是object。这两个大哥创造了世界。

  • 一个function有的属性是:proto、prototype
  • 一个obejct有的属性是:proto、prototype、constructor
  • 所有的是对象都是由object创建的。
  • 所有的函数都是可以看成对象。
  • proto是指向构造函数的原型对象。
  • prototype是指向自己的原型对象。

也就是object创造了function,function创造了obejct。两个人相互创建了对方。所以晕也是就是晕最后面一点。

一句,所有的对象都是object创建的。所有的函数都是function创建的。

晕啊!!!

相关文章

网友评论

      本文标题:面向对象--第四弹原型链

      本文链接:https://www.haomeiwen.com/subject/fwilzttx.html