Primero, defina un objeto obj, y el prototipo del objeto es obj._proto_. Podemos usar el método GetPrototypeOF en ES5 para consultar el prototipo de OBJ. Probamos si el prototipo de OBJ es igual al objeto. Prototipo para demostrar si el prototipo de OBJ existe. La respuesta devuelve verdadera, por lo que existe. Luego definimos una función foo (), y cualquier función tiene su objeto prototipo, es decir, el prototipo de función. Podemos agregar cualquier atributo al prototipo de funciones y luego compartir sus atributos por un nuevo objeto instanciado (los siguientes dos ejemplos se introducirán en detalle).
function foo () {} foo.prototype.z = 3; var obj = new foo (); obj.x = 1; obj.y = 2; obj.x //1obj.y //2obj.z // 3Typeof obj.ToString; //functionObj.ValueOf (); // foo {x: 1, y: 2, z: 3} obj.hasownproperty ('z'); //FALSOAquí, el prototipo de OBJ (_proto_) señala la propiedad prototipo de la función FOO, el prototipo de foo.prototype apunta a object.prototype, y el final de la cadena prototipo es nulo. A través de HaswnProperty, podemos verificar si la propiedad Z está en OBJ. Muestra falso. No hay propiedad Z en OBJ, pero al buscar su cadena prototipo, descubrimos que está en foo.prototype, por lo que obj.z = 3, y para el primer caso obj.valueOf () y toString están en objeto.prototype, por lo que cualquier objeto tiene estas dos propiedades, porque el prototipo de cualquier objeto es objeto. Por supuesto, a excepción del siguiente caso especial,
var obj2 = object.create (null); obj2.ValueOf (); //indefinido
Object.Create () crea un objeto vacío, y el prototipo de este objeto apunta a los parámetros. El siguiente ejemplo completo le muestra cómo implementar una clase para heredar otra clase
// Declarar una persona de la persona constructora (nombre, edad) {this.name = name; this.age = age;} persona.prototype.hi = function () {console.log ('Hi, mi nombre es' +this.name +', mi edad es' +this.age);}; persona.prototype.legs_num = 2; persona.prototype.arms_num = 2; persona.protototype.walk = function () {) ! ');}; función estudiante (nombre, edad, classnum) {persona.call (this, nombre, edad); this.classnum = classnum;} // Cree un objeto vacío student.prototype = object.create (persona.prototype); // constructor especifica la función para crear un objeto. Student.prototype.constructor = student; student.prototype.hi = function () {console.log ('Hi, mi nombre es'+this.name+', mi edad es'+this.age+'y mi clase es'+this.classnum);}; student.prototype.earns = function (sub) {console.log (this.name+'es un aprendizaje; '+sub);}; // instanciar un objeto bosnvar bosn = nuevo estudiante (' bosn ', 27,' clase 3 '); bosn.hi (); // Hola, mi nombre es Bosn, mi edad es de 27 años y mi clase es la clase 3Bosn.legs_num; //2bosn.walk (); // bosn está caminando! bosn.learns ('matemáticas'); // bosn está aprendiendo matemáticasLa persona del constructor y el estudiante este punto al objeto instanciado (BOSN), y el prototipo de este objeto apunta al prototipo del constructor.
Usamos el método Object.Create () para crear un objeto vacío, y el prototipo de este objeto es persona.prototype. La ventaja de escribir esto es que podemos crear cualquier atributo de studnet.prototype por nosotros mismos sin afectar al atributo de la persona. Si escribe persona.prototype = student.prototype directamente, entonces ambos apuntan a un objeto al mismo tiempo. Al agregar atributos al estudiante. Prototipo, los mismos atributos también se agregarán a la cadena prototipo de persona.
Para el método de llamada en el estudiante constructor, este interior apunta al objeto instanciado del estudiante recién creado, y hereda a través de la llamada.
Student.prototype.constructor = estudiante, el significado de esta oración es especificar que el estudiante es la función que crea el objeto student.prototype. Si no escribe esta oración, la función del objeto sigue siendo persona.
Hay tres formas de implementar la herencia.
Función Persona (nombre, edad) {this.name = name; this.age = edad;} function student () {} student.prototype = persona.prototype; //1student.prototype = object.create (persona.prototype); //2student.prototype = new Person (); // 3El análisis de la cadena de prototipos JS y el análisis de herencia (primera experiencia) anterior es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.