JavaScript является прототипом, а не классическим, поэтому, если вы думаете с точки зрения классов, вы делаете это неправильно.
Вам вовсе не обязательно использовать оператор new
. Вы можете создать новый объект, используя литерал объекта:
var myObject = {attr1: 'val1', attr2: 'val2'};
Затем вы можете создать новый экземпляр этого объекта:
var mySecondObject = Object.create(myObject);
Теперь вы можете изменить атрибуты mySecondObject
, и если у него есть методы, вы можете перегрузить их так же легко:
mySecondObject.attr1 = "Hello";
mySecondObject.attr2 = function() {
return "World!";
};
И тогда mySecondObject
будет, конечно, иметь все свойства, которые вы дали myObject
при создании.
Имейте в виду, что это простая версия, и что все атрибуты остаются открытыми. Если вам нужна конфиденциальность, это может быть достигнуто путем добавления некоторых функций в микс. Это немного сложнее, так что дайте мне знать, если вам интересно ...