javascript返回值绑定为对象值的函数值

时间:2012-11-14 17:56:22

标签: javascript jquery

我不能使用以下约定返回值bools / strings。

http://jsfiddle.net/eQWyY/

<input id="lol" type="text" value="ahh" />

<script>
function test() {
    var flag = false;
    if ($('#lol').val()) {
        alert($('#lol').val()); //"sanity check - pass"
        flag = true;
    }
    return flag;
};

function modal() {};
var m = new modal();

modal.prototype.init = function(x) {
    this.input = x;
    this.modals = {};
    this.initModalFrames();
    this.executeLogic();
}

modal.prototype.initModalFrames = function() {
    for (i in this.input) {
        this.modals[i] = {
            handle :    this.input[i].handle,
            frame :     this.input[i].frame,
            logic :     this.input[i].logic ? this.input[i].logic : null
        };
    }
}

modal.prototype.executeLogic= function() {
    var s = this;
    $.each(this.modals, function(i, o) {
        if(s.modals[i].logic != null) {
            var x = s.modals[i].logic.call();
            if(x) {
                alert('true');
            }
            else {
                //Always evaluates to false
                alert('false');
            }
        }
    });
}

m.init([
      {handle: '#handle1', frame: '#frame2', logic: function() {test();}},
]);

</script>

该函数似乎没有返回任何内容,并且总是计算为false。 我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您的logic处理程序应返回test执行结果:

{ handle: '#handle1', frame: '#frame2', logic: function() { return test(); } }

或更简单:

{ handle: '#handle1', frame: '#frame2', logic: test }

DEMO: http://jsfiddle.net/eQWyY/1/