栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在javascript中将普通对象转换为函数实例(“类”)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在javascript中将普通对象转换为函数实例(“类”)

在Javascript中创建对象需要调用其构造函数。因此,首先,您将需要找到正确的参数,而这些参数可能并不总是仅仅是属性。之后,您可以将所有公共属性从JSON解析的对象重新分配给创建的实例。

一个通用的解决方案是,每个构造函数都接受看起来像实例(包括真实实例)的任何对象并对其进行克隆。然后,将创建正确实例所需的所有内部逻辑放在正确的位置。

甚至比重载构造函数更好的方法是在类上创建一个静态方法,该方法接受对象并从中创建实例:

Person.fromJSON = function(obj) {    // custom pre, as appropriate for Person instances    // might invoke `new Person`    return …;};

您的情况非常简单,因为您没有任何参数,只有公共属性。要更改

{personName:John,animals:[]}
为对象实例,请使用以下命令:

var personLiteral = ... // JSON.parse("...");var personInstance = new Person();for (var prop in personLiteral)    personInstance[prop] = personLiteral[prop];

您也可以为此使用

Object.assign
功能(例如
jQuery.extend
ES6之前的版本):

var personInstance = Object.assign(new Person(), personLiteral);

Animal
实例的创建工作类似。

由于JSON不会传输有关类的任何信息,因此您必须先了解结构。在您的情况下,它将是:

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]);    }}

顺便说一句,您的

run
方法似乎可能会添加到
Animal.prototype
对象上,而不是每个实例上。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号