首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeList的原型扩展

NodeList的原型扩展
EN

Stack Overflow用户
提问于 2013-03-07 16:48:47
回答 2查看 422关注 0票数 1

我使用的是"html5“node.js库,基于"jsdom”库(https://github.com/aredridel/html5)。

我的代码是:

代码语言:javascript
复制
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 of NodeList (尝试p.tree.body_pointer._childNodes.constructor查看)。

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

我尝试了NodeList.prototype.foo = function(){返回"OK"},但是NodeList没有定义错误消息。

我想NodeList是在我找不到的东西里面声明的。在源代码中,我发现它是在coredom下找到的,但这两种代码在我的代码中都不可用。

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

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-29 07:24:15

我讨厌碰到一个旧的线程,然而,当我搜索如何扩展NodeList原型时,这是我在谷歌上的第一个搜索结果。

您可以使用Object.defineProperty为原型分配任何值或函数。

示例:

代码语言:javascript
复制
Object.defineProperty(NodeList.prototype, 'foo', {
    value: function() {
        // Return the lenght of the current NodeList
        return this.length;
    },
    enumerable: false,
    configurable: false,
});
票数 1
EN

Stack Overflow用户

发布于 2013-03-07 17:38:09

我能想到三种解决方案:

代码语言:javascript
复制
// 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() { ... };

不过,这三个人都不是很漂亮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15276942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档