Цитата:
А как? |
(function(name) {
var prototype = {}
prototype.__proto__ = Array.prototype;
with (prototype) {
// ниже перекрываешь методы добавляешь фильтры и.т.п.
// раз перекрыли -------------------------------------------------------
push = function(arg) {
if(typeof agr == 'string'){
//эта строчка использует метод массива
Array.prototype.push.apply(this, arguments)
}
};
// два перекрыли -------------------------------------------------------
blablabla = function(arg) {
alert(arg)
};
}
window[name] = function() {
var list = []
list.__proto__ = prototype
return list
}
})('List')
новые листы создаются без new чтобы удобнее было, просто var list = List() |
В общем, суть та же, только для более узкого круга задач :)
Я разобрался, ошибка была в том, что я в proxyFn вместо result = Array.prototype[fn].apply(obj, args);вызывал метод не из прототипа. Спасибо за помощь :) |
Цитата:
|
inst,
Обратите внимание на splice, я не помню как именно, но метод работал не корректно, а может и не только он, то ли элементы не удалялись, то ли индексы не менялись, тоже как-то давно очень захотелось подобную штуку сделать, потом понял ,что затея вобщем-то, просто ради затеи... |
function List() {
alert('Hello, I am List constructor!');
};
List.prototype = Object.create(Array.prototype, {
move: {
value: function () {
alert('I am custom method "move"!');
}
}
});
new List().move();
|
>= IE9 и Опера 11.60, но если для себя то уже можно ж;)
|
| Часовой пояс GMT +3, время: 20:38. |