Цитата:
А как? |
(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, время: 00:43. |