Javascript 你觉得这个扩展函数怎么样?

Javascript 你觉得这个扩展函数怎么样?,javascript,extend,Javascript,Extend,我已经创建了自己的扩展函数,但我不确定使用它是否合适。也许它很慢,或者做了我不期望的事情 看看这个: Object.prototype.Extend = function(){ this.__proto__.__proto__ = new (arguments[0].bind.apply(arguments[0],arguments))(); } function A(a){ this.a = a; } function

我已经创建了自己的扩展函数,但我不确定使用它是否合适。也许它很慢,或者做了我不期望的事情

看看这个:

Object.prototype.Extend = function(){                           
    this.__proto__.__proto__ = new (arguments[0].bind.apply(arguments[0],arguments))();
}

function A(a){
    this.a = a;
}

function B(a,b){
    this.Extend(A,a);
    this.b = b;
}
使用它进行的测试非常棒,但我不知道这是否真的是个好主意

让我知道你的意见。谢谢

\uuuuuuuuuuuuuuuuuu不是标准的,只在firefox中有效

此外,您正在为每个实例化设置继承,这并不理想,因为您正在重复该工作

您调用构造函数只是为了设置继承


查看我的帖子,了解更多关于你的模式的描述和其他问题

似乎从两个不同的类依次调用它来扩展不会很好。@Pointy,如果你想让instanceOf工作,我从来没有见过多重继承在JS中能很好地工作。@Juan Mendes,从多个源“层”扩展到一个对象是一个非常常见的习惯用法:全局默认值、上下文默认值,显式设置…@Pointy:这不是OP正在做的,OP正在设置原型链,尽管方式很差/是的,这是我的观点:-)我知道它在做什么,并且(出于许多原因)我认为这不是一个好主意。这第一条评论只是我想到的第一个问题(好吧,第一件事是“proto”不是一个标准,或者至少不是普遍支持的)。嗨!谢谢你的回答。如果这不是标准的conform解决方案,对我来说并不重要。我正在开发Chrome应用程序,它不关心其他浏览器。在chrome中,这也非常有效!在文章中,您可以在大纲或子对象中添加函数。我不喜欢这个synatx,因为我经常在公共函数中使用私有函数和变量。因此,在我看来,内联是更好的方式。当然,如果这是你的用途。然而,其他选项,如我所建议的,不会将您的代码绑定到一个平台上,让您更容易地共享您的代码。此外,我还提到了你的方法的其他问题。它仍然可以工作,只是不像我说的那样优雅,您的代码在不需要的时候运行。