Javascript函数保持循环中的最后一个引用

时间:2015-07-08 12:49:36

标签: javascript

buttons变量中,我创建了一些引用函数或对象的按钮。

在循环(l.15)中,迭代此buttons,为每个action创建一个action引用。

我的问题是:当调用buttonAction(l.18)引用的函数时,第19行的buttons.Ok(它应该引用第16行创建的变量)始终是最后一个循环,在本例中为 1. var buttons = { 2. 'Cancel': function () { 3. // stuff 4. }, 5. 'Ok': { 6. text: 'Ok', 7. id: 'btnOk', 8. click: function () { 9. // stuff 10. } 11. } 12. } 13. 14. var buttonsMap = []; 15. for (var i in buttons) { 16. var buttonAction = typeof buttons[i] == 'function' ? buttons[i] : buttons[i].click; 17. var map = { 18. action : function(arg) { 19. buttonAction.apply(arg); 20. } 21. }; 22. buttonsMap.push(map); 23. } 24. 25. var instance = new Dialog({ 26. buttons : buttonsMap, 27. });

我做错了什么?

    public class MySpinnerAdapter extends BaseAdapter {

    @Override
    public void isEnabled(int position) {
       return getItem(position).isEnabled(); 
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

      if(convertView == null) {
          convertView = View.inflate(parent.getContext(), R.layout.item, null);
      }
      if(!isEnabled(position)) {
          convertView.setEnabled(false);
          convertView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                //NO-OP: Just intercept click on disabled item
             }
          });
      }

      return convertView;
    }
}

0 个答案:

没有答案