this.show和this.show()函数调用之间的区别?

时间:2013-08-18 13:29:56

标签: javascript jquery

$(document).ready(function(){       
        $('html').addClass('js');
        var contactForm = {
            init: function(){
                $('<button></button>',{
                    text: 'contact me'
                }).appendTo('article')
                **.on('click', this.show);**
            }, 

            show: function(){
                console.log('show is clicked');
            }
        }

        contactForm.init();
    });

在onClick调用中,为什么在加载dom时会立即执行.on('click', this.show());,之后只有在单击按钮时才会执行。

2 个答案:

答案 0 :(得分:4)

末尾的括号表示应立即调用上一个函数。没有括号,它就成了函数的引用。

因此,on('click', this.show());意味着在设置show处理程序时,在加载时调用click函数,并将其返回值设置为事件处理程序。

on('click', this.show);为点击处理程序提供对show函数的引用,click事件发生时将调用该函数。

最佳做法是将函数的引用传递给事件处理程序 - 即。后一个例子。

答案 1 :(得分:3)

'on()'是一个函数(在这种情况下)有两个参数。

this.show传递对名为show的函数的引用。

this.show()调用该函数并传递返回值。