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

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

作者: 赵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