Herencia de JavaScript: herencia de prototipos

1. El origen de la herencia de prototipos:

Crockford introdujo un método para implementar la herencia. Este método no usa un constructor en sentido estricto, sino que usa prototipos para crear nuevos objetos basados ​​en objetos existentes sin tener que crear tipos personalizados.

Las funciones dadas son las siguientes:

    function Object(o){
//        临时性的构造函数
        function F() {}
        F.prototype = o;
        return new F();
    }

Explicación:

(1) Dentro de la función de objeto, primero se crea un constructor temporal y luego el objeto pasado se utiliza como prototipo del constructor. (2) El último devuelve una nueva instancia de este tipo temporal.

(3) En esencia, object () realiza una copia superficial del objeto pasado.

2. Herencia de prototipos:

Los ejemplos son los siguientes:

    function Object(o){
//        临时性的构造函数
        function F() {}
        F.prototype = o;
        return new F();
    } 

    var person = {
         name:"萝卜头",
         friends:["1","2","3"]
     };

     var anotherPerson = Object(person);
     anotherPerson.name="大萝卜头";
     anotherPerson.friends.push("5");

     var anotherPerson2 = Object(person);
     anotherPerson2.name="萝卜干";
     anotherPerson2.friends.push("7");

     console.log(person.friends);

Explicación del código:

En este ejemplo, el objeto persona que se puede utilizar como base para otro objeto se pasa a la función Objeto y luego la función devuelve un nuevo objeto. Este nuevo objeto tendrá person como prototipo, por lo que su prototipo contiene un atributo de valor de tipo básico y un atributo de valor de tipo de referencia. person.friends no solo es propiedad de person, sino que también es compartido por anotherPerson y anotherPerson2.

Nota: Este tipo de herencia prototípica requiere que tenga un objeto que pueda usarse como base de otro objeto . Si existe tal objeto, puede pasarlo a la función object () y luego agregar una modificación al objeto obtenido según necesidades específicas can.

3. Mejora:

ES5 estandariza la herencia de prototipos a través del nuevo método Object.create () . Este método acepta dos parámetros: un objeto utilizado como prototipo del nuevo objeto y un objeto que define propiedades adicionales para el nuevo objeto.

    var person = {
        name:"萝卜头",
        friends:["1","2","3"]
    };

    var anotherPerson = Object.create(person,{
        name:{
            value:"大萝卜头"
        }
    });
    anotherPerson.friends.push("5");

    var anotherPerson2 = Object.create(person,{
        name:{
            value:"萝卜干"
        }
    });
    anotherPerson2.friends.push("7");

    console.log(person.friends);


 La herencia de prototipos es una buena opción cuando solo desea que un objeto sea similar a otro. Pero las propiedades que contienen valores de tipo de referencia siempre compartirán el valor deseado, al igual que usar el patrón de prototipo.

Nota: Para obtener información, consulte "Programación avanzada de JavaScript".

Supongo que te gusta

Origin blog.csdn.net/weixin_43690348/article/details/113000121
Recomendado
Clasificación