javascript - 从现有对象动态创建新的 javascript 类

标签 javascript dynamic class

假设我有以下代码:

var album = new MyObject('album');

假设在构造对象时,通过 AJAX 加载仅与相册相关的一堆属性。是否可以创建一个 Album 类,以便稍后我可以这样做:

var anotherAlbum = new Album();

Album 构造函数会根据创建 MyObject('album') 时加载的内容自动设置专辑对象特有的属性

最佳答案

JavaScript 是原型(prototype)的,不是经典的,所以如果你从类的 Angular 思考,那你就错了。

您根本不必使用 new 运算符。您可以使用对象字面量创建一个新对象:

var myObject = {attr1: 'val1', attr2: 'val2'};

然后您可以创建该对象的新实例:

var mySecondObject = Object.create(myObject);

现在您可以更改 mySecondObject 的属性,如果它有方法,您可以轻松地重载它们:

mySecondObject.attr1 = "Hello";

mySecondObject.attr2 = function() {
                           return "World!";
                       };

然后 mySecondObject 当然会拥有您在创建时给 myObject 的所有属性。

请注意,这是一个简单的版本,所有属性都为“公共(public)”。如果您需要一些隐私,可以通过添加一些功能来实现。虽然它有点复杂,所以如果您有兴趣,请告诉我...

关于javascript - 从现有对象动态创建新的 javascript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342490/

相关文章:

php - 如果一个 php 类被定义为 final,那么将它的方法也定义为 final 是否有意义?

java - 如何在 Gradle 中查看我的依赖包的所有类名?

javascript - Amcharts 如何在不重新加载整个图表的情况下将新图表数据推送到图表中?

javascript - 无法在主页中使用自定义组件 - Typescript 错误

c - 使用动态字符串从 C 中的字符串中删除一个字符

C++ 动态 boolean 数组导致崩溃

javascript - 下载 pdf 格式的 D3 图

javascript - 调整 textarea 和 div 的大小——但调整到与 div 调整大小相同的比例

c# - 有什么简单的方法可以在 C# 中创建方法并动态设置其主体吗?

html - 图片不会以 CSS 居中