我理解的prototype(图)

2017-10-30  本文已影响11人  取个帅气的名字真好

首先构造对象:

    function person(nick, age){
        this.nick = nick;
        this.age = age;
        this.printName = function(){
              console.log(this.nick);
      }
  }
 var p1 = new Person('LiLi', 20);//new 创建对象
 var p1 = new Person('MM', 25);//new 创建对象

引发下图:

prototype.png

1、p1.、__proto__ 指向>> prototype
2、p2.__proto__ 指向>> prototype
3、 person.prototype 指向>> prototype
4、person.prototype.constructor 指向>> person
5、Person.prototype.__proto__ ==__p1.__proto__.__proto__
6、Person.prototype.__proto__ ==__p2.__proto__.__proto__
7、p1.__proto__ == p2.__proto__

如下:

prototype.png
总结:

1、当 new 一个函数的时候会创建一个对象,『函数.prototype』 等于 『被创建对象.__proto__』

2、一切函数都是由 Function 这个函数创建的,所以『Function.prototype === 被创建的函数.__proto__』

3、一切函数的原型对象都是由 Object 这个函数创建的,所以『Object.prototype === 一切函数.prototype.__proto__』

上一篇 下一篇

猜你喜欢

热点阅读