【发布时间】:2012-07-29 00:17:19
【问题描述】:
我想用一个函数覆盖一个对象的属性,这样每当对象的属性被调用时,它就会调用该函数并返回结果。
这在 JS 之类的动态语言中应该可以实现吗?
上下文:
我正在尝试将一些仅限 IE 的代码移植到其他浏览器。该代码广泛使用“Microsoft.XMLDOM”对象来解析和查询 XML 文档。我想在非 IE 浏览器中使用标准的 DOMParser。问题是 Microsoft 实现为 XML 元素公开了一个非标准的“文本”属性,并且该属性在代码库中被广泛使用,我想在 Element 原型上添加一个等效函数。
Element.prototype.text = function() {...}
不起作用,因为当代码库执行“myelem.text”时,它实际上并没有运行该函数,它只是返回一个指向它的指针。
我应该怎么做才能完成这项工作?
【问题讨论】:
-
您的目标浏览器是否支持 JS getter 和 setter?
-
不知道这些,谢谢@AnthonySottile,我会调查一下。
-
为了可扩展性(稍后使用代码),您可能应该添加自己的方法(或函数),该方法(或函数)基于
text属性的存在与否执行一个函数或只返回财产。这样文档的处理将始终调用相同的东西。
标签: javascript