【发布时间】:2015-07-03 20:09:35
【问题描述】:
在 Javascript 中,可以通过使用函数构造函数及其“原型”属性(即“未来实例的父级”)或最近使用 Object.create() 来获取新对象,从而进行某种继承。
然而最近我需要为我的一个项目“覆盖”Jquery 对象(“$”),也就是说,提供一个类似的函数,它也具有所有 fn/extend/... [继承]原始“jQuery”工厂函数的属性。
目标是有一个“$()”函数,默认情况下总是接收“window.parent”作为第二个参数,以便整个程序修改父框架而不是加载程序的 iframe。
通常我希望能够做这样的事情:
var oldJQ = $;
$ = function (selector) {
return oldJQ(selector, window.parent);
}
$.__proto__ = oldJQ .__proto__;
$.extend({...}); // must work
尽管尝试了无数次,但我无法让它工作,当使用“new”关键字时,我总是得到简单的对象而不是真正的函数,或者继承不起作用。我找到了替代方法(例如,将 $ 中的所有属性复制粘贴到我的新函数对象中),但在我看来这是一种可怕的做事方式。
有没有办法让一个新的函数对象作为父/原型,原始的 $ 对象?
【问题讨论】:
标签: javascript jquery inheritance prototype