簡體   English   中英

設置變量並傳遞給函數還是重新設置變量?

[英]Set variable and pass to function or re-set variable?

哪個最好? 設置一個變量並將其傳遞給調用,或者每次都重新設置var。 我想要self = this (即Slider obj)以保持一致性。

編輯答案:我知道我可以使用this但是我與其他團隊成員一起工作,並同意始終在引用對象時使用self一致性。

這樣更好嗎:

Slider = {
    init: function() {
        var self = this,
        foo = $('.someElement');

        self.bindEvent(self);
    },

    bindEvent: function(self) {
        self.foo.on('click', self.wasClicked(self));
    },

    wasClicked: function(e, self) {
        e.doSomething();
        self.done();
    }
};

或這個:

Slider = {
    init: function() {
        var self = this,
        foo = $('.someElement');

        self.bindEvent();
    },

    bindEvent: function() {
        var self = this;
        self.foo.on('click', self.wasClicked);
    },

    wasClicked: function(e) {
        var self = Slider;
        e.doSomething();
        self.done();
    }
};

根據第一個示例,如果將參數用作綁定目標,則代碼將更可重用。 例如:

bindEvent: function(target) {
    target.onclick = function() { alert(target + " was clicked"); };
}

現在, bindEvent()可以被其他函數調用,並以self以外的其他對象為目標。 雖然在當前的Slider對象中僅需要通過init()調用它,否則將來您可能最終會向Slider添加功能,這將受益於此功能的可重用性。 到那時,您可以避免重寫函數,或者更糟的是為新用例創建一個本質上重復的函數。

self不是目標的情況下,僅引用父母,兩個例子都不錯。 如果您的函數已經接受了很長的參數列表,則在函數內部設置self而不是將其作為參數傳遞通常是個好主意。 許多參數使理解,重構和測試代碼變得更加困難。

你只需要selfwasClicked ,在其他情況下,使用this

Slider = {

    init: function() {
        foo = $('.someElement');
        this.bindEvent();
    },

    bindEvent: function() {
        this.foo.on('click', this.wasClicked);
    },

    wasClicked: function(e) {
        var self = Slider;
        e.doSomething;
        self.done();
    }

}

Slider.init();

關於您的編輯:在第一個選項中,事件處理程序將不起作用,因為您是立即調用它而不是傳遞引用。 您必須修改方法以返回函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM