Home  >  Article  >  Web Front-end  >  What is prototype chain in js

What is prototype chain in js

anonymity
anonymityOriginal
2019-05-29 10:59:244194browse

Each constructor has a prototype object. The prototype object contains a pointer to the constructor, and the instance contains a pointer to the inside of the prototype object. We make the instance of the prototype object (1) equal to another prototype object (2),

At this time the prototype object (2) will contain a pointer to the prototype object (1),

Then Let the instance of the prototype object (2) be equal to the prototype object (3). This layer-by-layer progression forms a chain of instances and prototypes. This is the concept of the prototype chain

What is prototype chain in js

Prototype chain

Each constructor has a prototype object, and each constructor instance contains an internal pointer (proto) pointing to the prototype object. If we let the first constructor The prototype object is equal to the instance of the second constructor, so the prototype object of the first constructor will contain a pointer to the second prototype object, and the third prototype object is equal to the instance of the first constructor, so that the prototype object of the first constructor will contain a pointer to the second prototype object. The three prototype objects will also contain pointers to the first prototype object, and so on, which is enough to form a chain of instances in the prototype. This is the basic concept of the prototype chain

function One(){
 }
 function Two(){
 }
 function Three(){
 }
 Two.prototype=new One();
 Three.prototype=new Two();
 var three=new Three();
 console.log(three);
 console.log(three.__proto__===Three.prototype) //true
 console.log(three.__proto__.__proto__===Two.prototype) //true
 console.log(three.__proto__.__proto__.__proto__===One.prototype)  //true
 console.log(three.__proto__.__proto__.__proto__.__proto__===Object.prototype)  //true

In object instances , the method of accessing the object prototype

1. Use the proto attribute

This attribute is an attribute supported by the browser, not an attribute in ECMAScript

2 .Object.getPrototypeOf

3. Use the method of constructor.prototype

For browsers that do not support proto, you can use constructor to access the object's constructor, and then use prototype to access the prototype

Use the prototype chain to explain the ANUGLAR scope

During the development process, we may have controller nesting, look at the following code:

  <div ng-controller="OuterCtrl">
        <span>{{a}}</span>
         <div ng-controller="InnerCtrl">
            <span>{{a}}</span>
         </div>
     </div>
    <script>
    function OuterCtrl($scope) {
    $scope.a = 1;
    }
    function InnerCtrl($scope) {
    }
    </script>

We can see The interface displays two 1's, and we only defined the a variable in the scope of OuterCtrl, but the result given to us by the interface is that both a's have values. Now a in the self-controller is inherited from the parent controller. Over here

We can think of the parent-child scope as two prototype objects, one of which inherits the instance of the other prototype object

The above is the detailed content of What is prototype chain in js. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn