Javascript 使用ko.mapping.fromJS后指定对象类型

Javascript 使用ko.mapping.fromJS后指定对象类型,javascript,knockout.js,knockout-mapping-plugin,Javascript,Knockout.js,Knockout Mapping Plugin,我正在尝试克隆一个淘汰的虚拟机。 我发现了一些这样做的例子: var oldType = new myVM(); var newType = ko.mapping.fromJS(ko.toJS(oldType)); 它工作正常,但是newType现在是一个对象,而不是我想要的myVM类型。有没有办法将newType指定为myVM 谢谢。我的答案可能有点偏颇,因为我不喜欢敲除映射功能,我认为它会助长坏习惯 如果我这样做,我会在myVM上创建一个构造函数,它接受myVM的一个实例作为参数,然后设置

我正在尝试克隆一个淘汰的虚拟机。 我发现了一些这样做的例子:

var oldType = new myVM();
var newType = ko.mapping.fromJS(ko.toJS(oldType));
它工作正常,但是
newType
现在是一个
对象
,而不是我想要的
myVM
类型。有没有办法将
newType
指定为
myVM


谢谢。

我的答案可能有点偏颇,因为我不喜欢敲除映射功能,我认为它会助长坏习惯

如果我这样做,我会在myVM上创建一个构造函数,它接受myVM的一个实例作为参数,然后设置构造函数中的所有属性,我会手工编写映射

也就是说,您可以使用敲除映射做您想要做的事情:

var oldType = new myVM();
var newType = new myVM();
ko.mapping.fromJS(ko.toJS(oldType), newType);
编辑 刚刚检查了淘汰文档以刷新我的内存,您可能实际上需要将新类型作为第三个参数传递,第二个参数为空的options对象:

ko.mapping.fromJS(ko.toJS(oldType), {}, newType);

虽然这似乎表明两种方法都是有效的,我对此表示怀疑。

我完全按照你写的那样尝试了。由于某些原因,newType为空,并且没有任何oldType字段。是否尝试使用空对象作为第二个参数的编辑版本?是。。。未捕获类型错误:对象不是函数奇怪,我刚刚创建了一个简单的小提琴,它可以工作:你说得对。。。嗯,我的虚拟机要复杂得多,我想它失败是因为它的实现。无论如何谢谢你!