NodeList的原型扩展

时间:2013-03-07 16:48:48

标签: javascript node.js

我正在使用“html5”node.js库,基于“jsdom”库(https://github.com/aredridel/html5

我的代码是:

var  HTML5 = require('/usr/lib/node_modules/html5/lib/html5'),
     Script = process.binding('evals').Script,
     util = require('util'),
     fs = require('fs');
var p = new HTML5.Parser();
p.parse_fragment(fs.readFileSync('test.xml'));

现在我的p对象有p.tree.body_pointer._childNodes NodeList (尝试p.tree.body_pointer._childNodes.constructor来看看)。

我希望通过我的方法扩展它,以便能够调用p.tree.body_pointer._childNodes.foo()

我尝试了NodeList.prototype.foo = function(){return“OK”}但是我得到 NodeList未定义错误消息。

我猜NodeList是在我找不到的内容中声明的。查看源代码,我在coredom下找到了它,但我的代码中都没有这两个代码。

我还扫描了HTML5对象 - 但没有成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我能想到的三个解决方案:

// either ...
var NodeList = p.tree.body_pointer._childNodes.constructor;
// ...or...
var core = require('html5/node_modules/jsdom/lib/jsdom/level3/core');
var NodeList = core.dom.level3.core.NodeList;
// ...or...
var jsdom = require('html5/node_modules/jsdom');
var NodeList = jsdom.dom.level3.core.NodeList;
// ...and then...
NodeList.prototype.foo = function() { ... };

但这三个都不是真的很漂亮。