在整个Object中使用多个函数中的变量

时间:2013-02-12 13:54:54

标签: javascript

  • 我想使用一些从对象中的另一个函数设置的变量
  • 一个函数onUpdate:等待从应用程序中的其他位置进行调用
  • 点击鼠标后触发第二个函数onRelease:

我想要实现的目标

我需要为这两个函数使用一些DOM个元素。但是,document.onload在这里不起作用,因此我认为我需要将它们存储在某种JavaScript object中。

限制

(元素仅用于此Object,必须在Object内声明)


注意:这是一个自定义构建的app,所以看起来有点令人困惑,但我只需要知道在当前情况下是否可以这样做


问题

有没有办法使用Javascript Objects或某种存储/获取DOM元素的函数,以便它们可以在整个Object中使用?

代码

var ObjB = exports.ObjB = ObjA.extend({

    /* Something to contain the DOM Elements E.g.
     UI = {
         domElement: document.querySelector('#dom')
     }, 
    */ 

    onUpdate: function() {
        if(domElement.hasClass('class')) { 
            // logic using other elements
        }
    },

    onRelease: function() {
        if(domElement.hasClass('class')) { 
            // logic using other elements  
        }
    }

});

1 个答案:

答案 0 :(得分:0)

如果您想多次使用dom元素,并且您希望每次想要使用元素时都避免调用选择器,您可以这样做,但要奖励这只适用于您不要在以后删除或添加所需的元素(在您第一次调用this.setupUi()之后),因为UI只会初始化一次:

var ObjB = exports.ObjB = ObjA.extend({

    onUpdate: function() {
        this.setupUi();

        if(this.UI.domElement.hasClass('class')) { 
            // logic using other elements
        }
    },

    onRelease: function() {

        this.setupUi();

        if(this.UI.domElement.hasClass('class')) { 
            // logic using other elements  
        }
    },

    setupUi : function() {
        if( !this.UI ) {
           this.UI = {};
           this.UI.domElement =  document.querySelector('#dom');
           //add all other elements that are required by the object
        }

    }

});