2017-08-09 2 views
0

J'utilise le polymère 2 et j'utilise mixin pour les comportements. Dans ma sous-classe de comportement, je ne pouvais pas utiliser la méthode de la même sous-classe. Comment puis je faire ça? Voici mon code:Comment utiliser la fonction de sous-classe dans la classe de self

const Generic = (subclass) => class extends subclass 
{ 
constructor() 
{ 
    super(); 
} 

_arrayIntersect (a, b) 
{ 
let bigArray = a.length > b.length ? a : b, common = []; 

bigArray.forEach(function (elm) { 

    if(a.indexOf(elm) !== -1 && b.indexOf(elm) !== -1) 
    { 
    common.push(elm); 
    } 
}); 

return common; 
} 

_inArray (needle, haystack) 
{ 
    let length = haystack.length; 
    for(let i = 0; i < length; i++) 
    { 
    if(haystack[i] === needle) return true; 
    } 
return false; 
} 

bodyClick() 
{ 
    el.addEventListener('click', function(e) { 
    // How to use `_arrayIntersect` and `_inArray` from here 
    // this._inArray(needle, haystack) getting undefined message 
    }); 
} 
}; 

Répondre

0

Le this objet intérieur événement click indique l'élément clicked au lieu de l'instance de classe. Pour appeler la méthode super/sous classe, vous pouvez assigner le this objet à un var, quelque chose comme la façon suivante:

bodyClick() 
{ 
    let self = this; 
    el.addEventListener('click', function(e) { 
     let isExist = self._inArray(needle, haystack); 
    }); 
}