假设我有以下代码:
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/