У меня есть функция, предназначенная для использования с конструктором new
.Он должен возвращать массив со значением ["Hello World"]
и включать функции в качестве методов.Вот пример / демонстрация (извините, если это немного уродливо):
var my_object = function () {
this.foo = function (data) { // alert and add new item
alert(data);
this.push(data);
};
this.bar = function () { // alert and remove last item
alert(this.pop());
};
this.baz = function (stuff) { // replace last item by running previous methods
this.bar();
this.foo(stuff);
};
var a = "Hello World";
return [a];
};
var arr = new my_object(); // ["Hello World"]
Как и ожидалось, значение arr имеет значение ["Hello World"]
.Однако следующий код выдает ошибку:
arr.foo('some-text'); // "TypeError: arr.foo is not a function"
Такой же тип ошибки появляется с двумя другими функциями.Что я могу сделать, чтобы сделать эту работу, не изменяя Array.prototype, не создавая методы вне функции или удаляя возможность инициализации с помощью new my_object()
?
Примечание. Если возможно, не включайте ответы, используяjQuery или другие внешние библиотеки.