2

おはよう、

オプション ハッシュをパラメーターとして受け取る関数があります。オブジェクト リテラル定義内でその関数を呼び出すことはできますか? このような

 function dataCallback(opts) {

    var rowSelector = opts['id'] + ' .gridContent';
    var liSelector = opts['id'] + ' li';

    return function(args) { //do something with opts... 
              return; 
    }
    //omitted...

} 

var obj = { x : {id = '#someId1', callback: dataCallback(//what can I pass here? this? x? obj.x? nothing seems to work...)}
           , y : {id = '#someId2', callback: dataCallback(///???, this? y? obj.y?)}  };

私の質問が理にかなっていることを願っています。たぶん、タイトルで間違った表現をしました。とにかく、誰かがここで私をまっすぐにすることができれば、本当に感謝しています. ヒントやコツをありがとう。

乾杯、
サンディエゴで~ck

4

3 に答える 3

3

私が理解したことから、関数の戻り値をオブジェクトのプロパティに割り当て、オブジェクト自体を関数に渡したいということです。これは正しいです?

これを一度に行うことはできません。ステップを分離する必要があります。

var obj = {
    x: {id: '#someId1'},
    y: {id: '#someId2'}
}; 

obj.x.callback = dataCallback(obj.x);
obj.y.callback = dataCallback(obj.y);
于 2011-04-28T16:46:58.393 に答える
2

これを試して:

function dataCallback(opts) {

    var rowSelector = opts['id'] + ' .gridContent';
    var liSelector = opts['id'] + ' li';

    return function(args) { //do something with opts... 
        return;
    }
    //omitted...
}

var obj = {
    x: {
        id: '#someId1',
        callback: function(){dataCallback(this)}
    }, y: {
        id: '#someId2',
        callback: function(){dataCallback(this)}
    }
};

obj.x.callback();

そうしdataCallback(this)ないと、これはオブジェクトを参照せず、グローバルを参照しますDOMWindow

于 2011-04-28T16:46:30.017 に答える
0

はい、何も機能しません。JSON は自己参照可能ではないため、Firefox のみが JSON でシャープ変数をサポートするようになったため、次のように記述できます。

function dataCallback(opts) {
    // your logic here
    return function(args) { /* logic here */ };
}

var obj = {
    x:#1={
        id: '#someId1',
        callback: dataCallback(#1#)
    },
    y:#2={
        id: '#someId2',
        callback: dataCallback(#2#)
    }
};

Sharp Variable は Firefox の一部のバージョンでのみサポートされており、将来的に削除される可能性があることに注意してください。そのため、検討の際に使用してください。Sharp Variable の構文は非常に厳密なので、各文字に余分なスペースを入れずに「x:#1={」と記述する必要があります。

シャープ変数の参照: https://developer.mozilla.org/en/Sharp_variables_in_JavaScript

于 2011-04-28T16:53:35.883 に答える