Я не очень понимаю эту концепцию.Коробка - это просто контейнер.Он ничего не делает, но создает новый экземпляр.Здесь вам действительно нужен интерфейс Box, но у js нет интерфейсов.Вы можете использовать TypeScript, если хотите ...
function TextBox () {
this.builddom = function () {
// Building the text dom
}
}
function ImageBox () {
this.builddom = function () {
// Building the image dom
}
}
var container = {
createBox: function (type){
if (type == "text")
return new TextBox();
else if (type == "image")
return new ImageBox();
else
throw new Error();
}
};
var textbox = container.createBox('text');
textbox.builddom();
Другой вариант - использовать прокси, если вы хотите обернуть объекты, но я не думаю, что это ваша цель здесь.
Еслипозже вам понадобится проверка типов, тогда вы сможете использовать наследование, но мульти наследования нет, поэтому даже таким образом вы не можете имитировать интерфейсы.Это происходит между прочим.
function Box (){}
function TextBox () {}
TextBox.prototype = Object.create(Box.prototype, {
constructor:TextBox,
builddom: function () {
// Building the text dom
}
});
function ImageBox () {}
ImageBox.prototype = Object.create(Box.prototype, {
constructor:ImageBox,
builddom: function () {
// Building the image dom
}
});
var container = {
createBox: function (type){
if (type == "text")
return new TextBox();
else if (type == "image")
return new ImageBox();
else
throw new Error();
}
};
var textbox = container.createBox('text');
console.log(
textbox instanceof Box,
textbox instanceof ImageBox,
textbox instanceof TextBox
);
textbox.builddom();