concepto
1 Dividimos los objetos en JS en objetos ordinarios y objetos de función.
2 Los objetos de función tienen propiedades de prototipo - excepto Function.prototype - los objetos ordinarios no tienen esta propiedad.
3 Todas las funciones son instancias de constructores de Function () - Function.prototype = = fn / Function.prototype.prototype == ubdefined
4 La función principal de prototype -todas las propiedades y métodos agregados al objeto prototipo serán compartidos por todos los objetos de instancia- es decir,
5 objetos heredados tienen propiedades proto ocultas-los navegadores convencionales vienen con Sí , no para desarrolladores.
6 objetos tienen un atributo de constructor - el valor del atributo es el constructor o clase del objeto.
7 constructor raíz Objeto - Object.prototype.hh = 777 -> todos los objetos pueden acceder a hh.
8 prototipos Chain- es la relación de acceso especial entre múltiples prototipos
9 prototipo == Objeto prototipo JS / objeto prototipo que viene con el navegador proto
Relación entre prototipos
1 理解
1 obj.__proto__ == obj构造器的 prototype -- 一个对象可访问它原型链上的所有属性和方法
2 构造器的 __proto__ == ƒ () {
[native code] }
3 Object == 根构造器
4 Object.prototype == 原型链的末端 // 例 -- 所有对象可以使用 toString() 的原因就是, 该方法存在于原型链的末端
5 Object.prototype.__proto__ == null // 说明根构造器的原型对象没有构造器
2 常见场景
1 创建字符串 -- var str = "zhang"
2 原型指向 --> str.__proto__ == String.prototype
3 原型指向 --> String.prototype.__proto__ === Object.prototype //记住 String这类构造器的 __proto__ 就是直接指向原型链子末端的
4 原型指向 --> Object.prototype.__proto__ === null
4 案例解析
1 Object.prototype.hh = 77 --> var str = "zhang" --> console.log(str.hh) // 77
2 浏览器通过原型链查找 hh 属性过程
1 str.hasOwnProperty('abc') false
2 str.__proto__.hasOwnProperty('abc') false
3 str.__proto__.__proto__.hasOwnProperty('abc') true -> 返回 hh 的属性值 66
4 str.__proto__.__proto__ == String.prototype.__proto__ == Object.prototype
heredar
1 concepto
La herencia en JS se realiza a través del prototipo: el método de propiedad del prototipo puede ser compartido por la propia cadena de prototipos de objetos de instancia del prototipo
.2 formas de herencia
1 La herencia del constructor tiene limitaciones ...
2 La herencia del prototipo no es razonable ...
3 La herencia de copia de los objetos padre e hijo se verá afectada ...
4 Métodos de herencia
de uso común para la herencia mixta 5 Métodos de herencia de uso común para la herencia de clases
3 -- 混合继承的实现方式