2017-08-09 34 views
0

我正在使用聚合物2,我正在使用mixin進行行爲。在我的行爲子類中,我無法使用相同子類的方法。我怎樣才能做到這一點? 這裏是我的代碼:如何在自我類中使用子類函數

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 
    }); 
} 
}; 

回答

0

單擊事件內的this對象指示點擊的元素,而不是類的實例。要調用超/子類的方法,你可以指定this對象的變種,像下面這樣:

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