1
$(function(){

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

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

})

小提琴

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

ps 我的意思是,他调用 model.prop 而不是 model.prop()

4

4 回答 4

4

因为text()接受一个回调函数,从中派生所需的文本。

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

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

于 2013-06-10T11:47:55.520 回答
3

因为该text方法还接受一个函数作为参数并在内部调用它。

查看这个文档,它接受一个函数作为参数。

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

如果你想打印函数体,那么你可以调用toString()来打印函数体

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

演示:小提琴

于 2013-06-10T11:47:46.263 回答
2

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

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

function(index, text)类型:函数()

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

于 2013-06-10T11:48:03.437 回答
1

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

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

于 2013-06-10T11:49:26.203 回答