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

JavaScript: Call private function within attribute's event listener

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

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 的点击事件侦听器中调用 bark() 函数的最合适方法是什么?关闭?

如果您需要像这样将一些参数传递给您的函数:

function bark(args1, args2) {}

那么你应该在点击的上下文中调用它:

noseButton.click(function() {
        // bark();
    });

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

noseButton.click(bark)

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

所以答案是,这取决于你要传递多少参数。

试试这个:

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 是安全的,推荐实践如何处理代码的私有部分。

希望对您有所帮助。