Расширение методов элементов в JSDOM - PullRequest
1 голос
/ 27 мая 2020

Как мы можем расширить методы элементов в JSDOM на все открытые страницы?

// load the module and few pages
const JSDOM = require("jsdom").JSDOM;
var dom1 = new JSDOM("<p>1st</p><p>2nd</p>");
var dom2 = new JSDOM("<p>1st</p><p>2nd</p>");
...

// add methods such as: map, filter, searchText...
var window = dom1.window;
window.NodeList.prototype.map = 
    function (cb) { return Array.from(this).map(cb) };
...

// Execution:
dom1.window.document.querySelectorAll('p').map(p=> p.textContent);
// returns: [ '1st', '2nd' ]
dom2.window.document.querySelectorAll('p').map(p=> p.textContent);
// throws an error

Можно ли расширить NodeList one , не загружая его на каждый новый документ ?
Что-то вроде:

JSDOM.installedInterfaces.NodeList.prototype.map = ...
...