首页 > web前端 > js教程 > 正文

如何在 JavaScript 中将通用对象转换为类型化实例?

DDD
发布: 2024-10-18 12:05:28
原创
977 人浏览过

How to Cast Generic Objects to Typed Instances in JavaScript?

在 JavaScript 中将泛型对象转换为类型化实例

问题陈述:

来自的 JSON 响应服务器通常包含表示类实例的普通对象。将这些通用对象转换为类型化实例可以利用它们的类方法并访问类型化数据。

解决方案:

创建对象实例需要调用它们的构造函数。但是,JSON 数据缺少构造函数信息,因此需要采用不同的方法。

1.迭代克隆:

此方法涉及将普通对象的属性克隆到新创建的实例:

<code class="javascript">var personLiteral = ...; // JSON.parse("...");
var personInstance = new Person();
for (var prop in personLiteral)
    personInstance[prop] = personLiteral[prop];</code>
登录后复制

2。使用 Object.assign:

Object.assign 可用于更简洁地完成相同的任务:

<code class="javascript">var personInstance = Object.assign(new Person(), personLiteral);</code>
登录后复制

对于具有嵌套结构的更复杂的对象,可以迭代属性和递归地应用相同的克隆过程。

3.自定义构造函数克隆:

每个构造函数都可以扩展为接受普通对象并克隆它们,处理任何必要的逻辑:

<code class="javascript">Person.fromJSON = function(obj) {
    // custom code, as appropriate for Person instances
    // might invoke `new Person`
    return …;
};</code>
登录后复制

示例:

在您的特定场景中,将克隆过程应用于 Person 和 Animal 对象:

<code class="javascript">var persons = JSON.parse(serverResponse);
for (var i=0; i<persons.length; i++) {
    persons[i] = $.extend(new Person, persons[i]);
    for (var j=0; j<persons[i].animals; j++) {
        persons[i].animals[j] = $.extend(new Animal, persons[i].animals[j]);
    }
}</code>
登录后复制

请记住,应将 run 方法添加到 Animal 原型而不是单个实例。

以上是如何在 JavaScript 中将通用对象转换为类型化实例?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板