在另一个属性中创建对变量的引用

时间:2013-09-09 21:36:54

标签: javascript performance

我将 vars 对象中的变量 evtID 传递给 createEvent 方法中的click事件。我必须使用 cal.vars.evtID 来引用它,我想知道是否有任何方式将此作为参考传递给另一个变量以使输入量更短?

基本上我不想为我在vars对象中创建的每个变量输入cal.vars.variable名称。

var cal = {    

    vars: {
        evtID: 0 // here
    },

    createEvent: function(){

        $('.square').on('click',function(){     
            var array = [
                '<div class="event" id="event' + cal.vars.evtID + '">', // and here
                    '<div class="close"></div>',
                '</div>'
            ];

            $('.event-container').append(array.join(""));
        cal.vars.id++;

        });
    },

    init: function(){
        this.createEvent();
    }
}

window.onload = function(){
    cal.init();
}

1 个答案:

答案 0 :(得分:0)

你不能缩短它。

在您的代码this中,在Click处理程序中重新分配,但您可以使用它来访问当前对象:

var cal = {    
    vars: {
        evtID: 0 // here
    },
    createEvent: function(){
        this.vars.evtID;
    }
}

如果你想在处理程序中使用它,你必须存储对它的引用:

createEvent: function(){
    var that = this;
    $('.square').on('click',function(){     
         that.vars.evtID;
    }  
}

或直接将参考文献存储到vars

createEvent: function(){
    var vars = this.vars;
    var evtID = vars.evtID;
    $('.square').on('click',function(){     
         vars.evtID;
         evtID;
    }  
}

在第二种情况下,evtID变量将包含数字的值,因此如果更改它,cal.vars.evtID的值将不会更改。