Задание по Javascript ООП:
Необходимо расширить тип Array, дополнив его методом each, применяющем переданную ему в качестве параметра функцию к каждому из элементов массива.
Например, код ["sdf", 423].each(function(){alert(this)}) должен последовательно вывести два сообщения, по количеству элементов.
Далее создать класс, который обладает полной функциональностью типа Array, а так же имеет метод .view, показывающий содержимое массива в модальном окне с возможностью редактирования. Вид и поведения окна может варьироваться на усмотрение исполнителя задачи.
Array.prototype.each = function(callback){
for(var i = 0; i < this.length; i++) {
callback.call(this[i])
}
};
// ["sdf", 423].each(function(){alert(this)});
var MyArray = function() {
return( this );
};
MyArray.prototype = Object.create( Array.prototype );
MyArray.prototype.view = function () {
var table,tbody,div,text,
delElArr,
addElArr,
self = this;
div = document.createElement("div");
text = document.createTextNode('Удалить элемент массива');
div.setAttribute("id", "delElArr");
div.appendChild(text);
document.body.appendChild(div);
div = document.createElement("div");
text = document.createTextNode('Добавить элемент массива');
div.setAttribute("id", "addElArr");
div.appendChild(text);
document.body.appendChild(div);
function renderArrayList() {
content=document.getElementById("content");
content.innerHTML = '';
table = document.createElement("table");
tbody = document.createElement("tbody");
table.appendChild(tbody);
self.forEach(function(item) {
var row = document.createElement("tr");
var cell = document.createElement("td");
cell.textContent = item;
row.appendChild(cell);
tbody.appendChild(row);
});
content.appendChild(table);
}
renderArrayList();
delElArr = document.getElementById('delElArr');
delElArr.onclick = function() {
self.pop();
renderArrayList();
};
addElArr = document.getElementById('addElArr');
addElArr.onclick = function() {
self.push(prompt('Введите значение:'));
renderArrayList();
}
};
myArray = new MyArray();
myArray.push("one");
myArray.push("two");
myArray.view();