zoukankan      html  css  js  c++  java
  • JavaScript原型链:prototype与__proto__


    title: 'JavaScript原型链:prototype与__proto__'
    toc: false
    date: 2018-09-04 11:16:54


    主要看了这一篇,讲解的很清晰,最主要的一点为:

    若:

    var Person = function () { };
    var p = new Person();
    

    则:

    p.__proto__ = Person.prototype;
    

    当调用p.xxx()时,首先在p中找xxx这个属性,没有的话从p__proto__(即Personprototype)中寻找,如果没有,则继续向上寻找(p.__proto__.__proto__Person.prototype.__proto__, ...)。

    例如下面这个例子:

    var Person = function() {
        Person.prototype.Say = function () {
            alert("Person say");
        }
    }
    
    var Programmer = function() {}
    Programmer.prototype = new Person();
    var p = new Programmer();
    

    我们可以得出:

    p.__proto__ = Programmer.prototype

    p.__proto__.__proto__ = Programmer.prototype.__proto__ = Person.prototype

    所以在调用p.Say()方法时,现在p中寻找这个属性,如果没有就在p.__proto__中寻找,然后一步一步往上,最后在Person.prototype找到这个方法。

  • 相关阅读:
    Java基础00-循环语句7
    Java基础00-分支语句6
    Java基础00-数据输入5
    Java基础00-运算符4
    Java基础00-基础语法3
    Java基础00-第一个程序2
    第十四题
    第十三题
    第十二题
    第十题
  • 原文地址:https://www.cnblogs.com/zmj97/p/10180553.html
Copyright © 2011-2022 走看看