jquery方法调用没有'()&#39 ;?的对象方法

时间:2013-06-10 11:44:46

标签: javascript jquery

$(function(){

    var model = function(){
        return {
            prop: function(){ return $('input').val(); }
        }        
    }();

    $('button').click(function(){
        console.log(model.prop);
        $('label').text(model.prop)      
    })

})

Fiddle

检查控制台输出与html中的更新值。没有“()”调用,它如何获得返回值而不是func的主体?

P.S。我的意思是,他称为model.prop而不是model.prop()

4 个答案:

答案 0 :(得分:4)

因为text()接受一个回调函数,可以从中导出所需的文本。

http://api.jquery.com/text/#text-functionindex--text

如果你传递一个字符串,它会输出。如果你传递一个函数,它会执行它并吐出返回值。

答案 1 :(得分:3)

因为text方法也接受函数作为参数并在内部调用它。

查看this documentation接受函数作为参数的位置。

  

function(index,text)类型:Function()返回文本的函数   要设置的内容。接收集合中元素的索引位置   和旧文本值作为参数。

如果要打印功能体,可以调用toString()打印功能体

$('label').text(model.prop.toString())      

演示:Fiddle

答案 2 :(得分:2)

因为您可以将函数传递给几乎每个jQuery方法,以便为集合中的单个元素动态创建值。来自the docs

  

.text(函数(索引,文本))

     

function(index, text)输入:Function()

     

返回要设置的文本内容的函数。接收集合中元素的索引位置和旧文本值作为参数。

答案 3 :(得分:1)

从jQuery 1.4开始,如果传递给$ .text的参数是一个函数,jQuery将执行它并将其结果用作文本。

http://api.jquery.com/text/