Prototipo de patrón de cadena (en profundidad)

Configuración masiva de propiedades y métodos públicos en prototipos

案例一
普通:
function Fn(){
    
    
this.x = 100;
}
Fn.prototype.getX = function(){
    
    
console.log(this.x);
};
Fn.prototype.getY = function(){
    
    
console.log(this.x);
};
Fn.prototype.getZ = function(){
    
    
console.log(this.x);
};
var f1 = new Fn;

1. Crea un alias

Asigne la dirección a la que apunta el prototipo original a nuestro pro, ahora operan en el mismo espacio de memoria

案例一拓展
function Fn(){
    
    
this.x = 100;
}
var pro = Fn.prototype;
pro.getX = function(){
    
    
console.log(this.x);
};
pro.getY = function(){
    
    
console.log(this.x);
};
pro.getZ = function(){
    
    
console.log(this.x);
};
var f1 = new Fn;

2. Refactorización del método del objeto prototipo

Abra una memoria de montón usted mismo, almacene nuestras propiedades y métodos públicos, y reemplace el desarrollado originalmente por el navegador para Fn.prototype

案例一拓展:
function Fn(){
    
    
this.x = 100;
}
constructor:Fn,
Fn.prototype = {
    
    
a:function(){
    
    
},
b:function(){
    
    
}
};
var f= new Fn;
f.a();>>可以执行
console.log(f.constructor);
>>object

punto de conocimiento


1. Solo hay un constructor en la memoria del montón que el navegador creó para Fn.prototype , pero no tenemos esta propiedad propia, por lo que el constructor no apunta a Fn sino al objeto. , necesitamos agregar manualmente el apuntamiento del constructor

2. Agregue propiedades públicas
a las clases integradas de esta manera Agregue métodos de deduplicación de matriz a las clases integradas Array

案例二
普通
Array.prototype.unique = function(){
    
    
};
或者
Array.prototype = {
    
    
constructor:Array,
unique:function(){
    
    
}
};
console.dir(Array.prototype);

Nuestro método reemplazará las propiedades y los métodos que existían antes en el prototipo, por lo que si modificamos la clase integrada de esta manera, el navegador la bloqueará.

Pero podemos modificar los métodos incorporados uno por uno. Cuando agregamos métodos al prototipo de la matriz de la siguiente manera, si el nombre del método se duplica con el método incorporado original, el método incorporado se modificará y
lo agregaremos al prototipo de la clase integrada más adelante. Para agregar métodos, debe agregar un prefijo especial al nombre

案例二拓展
Array.prototype.sort=function(){
    
    
console.log(this);
>>this是ary当前操作的这个数组
}
var ary = [1,2,2,3,2,1,3,4,1,2];
ary.sort();
console.log(ary);

Supongo que te gusta

Origin blog.csdn.net/yilingpupu/article/details/105486865
Recomendado
Clasificación