Reconocer rápidamente el prototipo

Prefacio

En JavaScript, podemos simular la herencia manipulando prototipos.
Antes de aprender la herencia, debemos comprender los objetos prototipo en el siguiente JavaScript.


1. La diferencia entre __prto__ y prototype

Los objetos que tienen _proto_propiedades pueden denominarse " "prototipos . El prototipo implícito de un objeto apunta al prototipo de la función constructora que construyó el objeto, lo que también asegura que la instancia pueda acceder a las propiedades y métodos definidos en el prototipo de la función constructora.
El método de este tema en particular, además de tener las _proto_propiedades anteriores , prototypelas propiedades únicas del método.
Cuando creamos una instancia de un objeto, el _proto_atributo del objeto apunta a los prototypeatributos de función predeterminados .

    function Person(name){
    
    
        this.name = name;
        this.sayName = function(){
    
    
            console.log(`我叫${
      
      this.name}`)
        }
    }
    var person1 = new Person();//实例化Person构造方法
    var person2 = new Person();
    
    t.__proto__ === test.prototype;// true 

Mecanismo de operación de código:

  1. Después de crear un constructor personalizado, su objeto prototipo solo tendrá propiedades de constructor por defecto , y otras propiedades y métodos se heredan de Object.

La propiedad del constructor devuelve el cuerpo de la función que creó este objeto.

  1. Cuando se llama al constructor para crear una nueva instancia, el interior de la instancia contendrá un puntero al objeto prototipo del constructor. ECMA5 llama a este puntero [[prototipo]] . Aunque no existe una forma estándar de acceder a [[prototype]] en scripts, en Firefox, Safari y Chrome, el atributo __proto__ es la implementación de acceder a [[prototype]] . En Internet Explorer, este atributo es completamente invisible. Pero el punto real que debe quedar claro es que esta conexión existe entre el objeto de instancia y el objeto prototipo del constructor ( es decir, el nombre del constructor.prototype ), no entre la instancia y el constructor.
    Inserte la descripción de la imagen aquí

heredar

// 定义一个Person类
      function Person(name, age) {
    
    
          this.name = name;
          this.age = age;
          //定义一个info函数
          this.info = function() {
    
    
              document.writeln("年龄" + this.age + "姓名" + this.name);
          }
      }
      //创建Person类的实例对象
      var p1 = new Person('xiaoming', 20);
      //调用p1的info方法
      p1.info();

      //为Person类增加walk方法
      Person.prototype.walk = function() {
    
    
          document.writeln(this.name + '正在走<br/>');
      }
      var p2 = new Person('xiaohong', 20);
      //p2可以调用Person中的方法
      p2.info();
      //也可以调用prototype属性增加的方法
      p2.walk();
      //JS允许为类动态增加方法和属性,这里p1也可以调用walk
      p1.walk();

Las propiedades o métodos agregados al prototipo del objeto y el objeto constructor de la instancia pueden acceder a las cosas en su prototipo. De esta manera, se realiza la "industria del padrastro infantil".

referencia

CSDN: [[https://blog.csdn.net/q5706503/article/details/82947977]]

Supongo que te gusta

Origin blog.csdn.net/qq_35370002/article/details/108180933
Recomendado
Clasificación