Modo de cadena de prototipos (extensión)

Modo de cadena de prototipos (extensión)

esto y prototipo

En el modo prototipo, esto se usa comúnmente en dos casos:
en la clase this.xxx=xxx;this>>la instancia de la clase actual

Esto>> en un método depende de quién está delante de "." cuando se ejecuta, y quién es este.
1) Necesitas determinar el punto de este primero (quién es este)
2) Reemplazar esto con el correspondiente

案例五
function Fn(){
    
    
this.x=100;
this.y=200;
this.getY:function(){
    
    
console.log(this.y);
};
}

Fn.prototype={
    
    
constructor:Fn,
y=300,
getX:function(){
    
    
console.log(this.x);
},
getY:function(){
    
    
console.log(this.y);
}
};
var f=new Fn;
f.getX();
>>100>>console.log(f.x)
f.__proto__.getX();
>>this是__proto__>>console.log(__proto__)>>undefined
f.getY();
>>200
Fn.prototype.getX();
>>undefined
f.__proto__.getY();
>>300
Array.prototype.myUnique=function(){
    
    
>>this
};
var ary[];
ary.myUnique();
 >>this是ary
Array.prototype.myUnique();>>this是Array.prototype

Extender métodos en prototipos de clases integradas

案例六
Array.prototype.myUnique=function(){
    
    
// >>this>>ary
var obj={
    
    };
for(var i=0;i<this.length;i++){
    
    
var cur=this[i];
if(obj[cur]==cur){
    
    
this[i]=this[this.length-1];
this.length--;
i--;
continue;
}
obj[cur]=cur;
}
obj=null;
};
var ary[10,12,13,11,16,18,31,21,10];
普通:
ary.sort(function(a,b){
    
    
return a-b;
});
ary.reverse();
ary.pop();

cadena:

Después de ejecutar un método de la matriz, el siguiente método se puede ejecutar inmediatamente

Principio:
¿Por qué ary puede usar el método de clasificación?

Debido a que sort es un método público en Array.prototype, y el arreglo ary es una instancia de la clase Array, ary puede usar el método sort. Los
arreglos pueden usar las propiedades y métodos definidos en el prototipo Array.
El valor devuelto después de la ejecución de sort is complete is a sorted La "matriz" de la "matriz" puede seguir ejecutándose
. El valor devuelto de la ejecución inversa es una matriz, y
el valor devuelto de la ejecución pop puede seguir ejecutándose. El valor devuelto es el elemento que se eliminó, no una matriz, así que ejecute empujar nuevamente para informar un error

链式:
ary.sort(function(a,b){
    
    
return a-b;
}).reverse().pop();
ary.myUnique();
案例七
Array.prototype.myUnique=function(){
    
    
// >>this>>ary
var obj={
    
    };
for(var i=0;i<this.length;i++){
    
    
var cur=this[i];
if(obj[cur]==cur){
    
    
this[i]=this[this.length-1];
this.length--;
i--;
continue;
}
obj[cur]=cur;
}
obj=null;
return this;>>为了实现链式写法
};
var ary[10,12,13,11,16,18,31,21,10];
ary.myUnique();.sort(function(a,b){
    
    
return a-b;
});
console.log(ary);

Supongo que te gusta

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