Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置现有对象的类_Javascript_Class_Prototype_Prototype Chain - Fatal编程技术网

Javascript 设置现有对象的类

Javascript 设置现有对象的类,javascript,class,prototype,prototype-chain,Javascript,Class,Prototype,Prototype Chain,我有一个无法替换的现有对象,但我想通过给它多个新方法来调整它的功能。这些是在类中定义的。因此,我想将这个对象的原型设置为给定的类。我尝试了Object.setPrototypeOf(obj,clazz),但这似乎不起作用。我最终得出的结论如下,这是有效的: function _setClassOf(obj, clazz) { const fooInstance = new clazz(); Object.setPrototypeOf(obj, Object.getPrototyp

我有一个无法替换的现有对象,但我想通过给它多个新方法来调整它的功能。这些是在类中定义的。因此,我想将这个对象的原型设置为给定的类。我尝试了
Object.setPrototypeOf(obj,clazz)
,但这似乎不起作用。我最终得出的结论如下,这是有效的:

function _setClassOf(obj, clazz) {
    const fooInstance = new clazz();
    Object.setPrototypeOf(obj, Object.getPrototypeOf(fooInstance));
}
它的缺点是,给定类的构造函数可能有副作用,我不想在这种情况下执行


有没有更好的方法来设置现有对象的类?

我不确定有没有不运行构造函数的方法,因为构造函数理论上可以修改原型。除非
clazz
做了一些奇怪的事情,否则可以替换
object.getPrototypeOf(new clazz())
使用一个简单的
clazz.prototype
,而不调用构造函数“我有一个无法替换的现有对象”-您能告诉我们有关您的用例的更多信息吗?听起来你不太可能希望在同一个对象上有完全不同的原型。
我想调整它的功能
你真的想在运行时这样做吗?为什么不通过用您想要添加的功能封装其他类来重新定义对象的类呢?