JavaScript:在属性的事件监听器中调用私有函数

时间:2015-12-31 08:41:54

标签: javascript oop object javascript-events closures

在属性的事件监听器函数中调用私有函数的最佳方法是什么?

JavaScript对象:

function dog() {
    /* dog's private attribute: noseButton */
    var noseButton = $("#dog-nose-btn");
    noseButton.click(function() {
        // bark();
    });

    /* private function bark() */
    function bark() {
        console.log('woof!');
    }
}

那么在noseButton的click事件监听器中调用bark()函数最合适的方法是什么?封?

谢谢你&新年快乐!

2 个答案:

答案 0 :(得分:1)

如果您需要将一些参数传递给您的函数,请执行以下操作:

function bark(args1, args2) {}

然后你应该将它调用到click:

的上下文中
noseButton.click(function() {
        // bark();
    });

否则,如果只有一个参数通过,则不需要这样做:

noseButton.click(bark)

通过这种方式,如果您使用此单个参数,它将被解释为事件。

所以anwser是,它取决于你将传递多少参数。

答案 1 :(得分:0)

试试这个:

var dog = (function() {
    return {
        bark: function() {
            console.log('woof!');
        }
    };
})();

function dog() {
    /* dog's private attribute: noseButton */
    var noseButton = $("#dog-nose-btn");
    noseButton.click(function() {
        // bark();
        dog.bark();
    });

}

Closure是安全的,建议如何处理代码的私有部分。

我希望这会有所帮助。