Prefacio
En JavaScript, podemos simular la herencia manipulando objetos prototipo.
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 ,prototype
las propiedades únicas del método.
Cuando creamos una instancia de un objeto, el_proto_
atributo del objeto apunta a losprototype
atributos de función predeterminados .
function Person(name){
this.name = name;
this.sayName = function(){
console.log(`我叫${
this.name}`)
}
}
var person1 = new test();//生成对象person1实例化Test构造方法
var person2 = new test();
/*
对象t生成时会从Object继承一个__proto__属性,指向创造它的构造方法原型-->构造方法test。
*/
t.__proto__ === test.prototype;// true
Mecanismo de operación de código:
- 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.
- 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 los scripts , Firefox, Safari y Chrome admiten un atributo __proto__ en cada objeto. 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.
Herencia en JS
Utilice el prototipo para agregar datos a la matriz de prototipos
referencia
知 乎: [[https://zhuanlan.zhihu.com/p/92894937]]
CSDN: [[https://blog.csdn.net/q5706503/article/details/82947977]]