Поскольку вы передаете this
в качестве аргумента, вам просто нужно создать для него параметр - назовите его, скажем, _this
- и тогда вы можете ссылаться на _this
вместо this
внутрифункция:
(function(_this, innerkey){
$(innerkey).observe('click', (function(e){
Event.stop(e);
someClass.click_link( _this.items.sublinks[key][innerkey],false)
}));
)(this, innerkey);
(Есть и другие способы, но, похоже, вышеизложенный способ, к которому вы стремились, когда передавали this
в качестве аргумента? И это вполне респектабельный способсделайте это.)
Отредактировано, чтобы добавить: В соответствии с комментарием Роба В., я отредактировал вышеупомянутое, чтобы добавить innerkey
в качестве параметра, так как в противном случае внутреннее выражение function(e){...}
будет ссылаться на ту же innerkey
переменную , что и на внешнюю функцию - переменную, которая, как переменная цикла, вероятно, изменится к тому времени, когда внутренняя функция на самом деле выполняется.Передача его в качестве параметра дает внутреннему выражению новую переменную innerkey
, которая равна тому, что innerkey
было при создании внутренней функции.