1

オブジェクトリテラルに依存しようとしているときに、一部のプロパティが以前に定義された他のプロパティに依存するオブジェクトを作成しようとしています。言い換えれば、私は次のコードのようなことを達成しようとしています(これは正しくありません):

var mesh = {
            offset   : $('#mesh').offset(),
            position : $('#mesh').position(),
            height   : win.height - this.offset.top - 12,   
            width    : win.width - this.offset.left - 12,   
            limits   : {}
        }

この種のもの(これは機能します)とは対照的に:

var mesh = {};
        mesh.offset   = $('#mesh').offset();
        mesh.position = $('#mesh').position();
        mesh.height   = win.height - mesh.offset.top - 12;  
        mesh.width    = win.width - mesh.offset.left - 12;
        mesh.limits = {};

したがって、私の質問はかなり単純です。コードの最初のブロックの実際の問題と、以前に定義されたプロパティに基づいて新しいプロパティを作成するためにそれを修正するにはどうすればよいですか?

4

2 に答える 2

3

現在作成中のオブジェクト リテラルを参照する名前はありません。2 番目の形式を使用するか、参照できる変数に値を含める必要があります。

var offset = $('#mesh').offset();
var mesh = {
    offset   : offset,
    position : $('#mesh').position(),
    height   : win.height - offset.top - 12,   
    width    : win.width - offset.left - 12,   
    limits   : {}
}
于 2012-04-28T13:57:59.057 に答える
0

コンストラクター関数を作成できます

var Mesh = function(mesh_id){
    var mesh = $(mesh_id);
    this.offset = mesh.offset();
    this.position = mesh.position();
    this.height = win.height - this.offset.top - 12;
    this.width = win.width - offset.left - 12
    this.limits = {}


};

そして、このように使用します

var myMesh = new Mesh('#mesh')

*このコードは、何らかの変数 win が定義されていることを前提としていることに注意してください。あなたはおそらくそれを次のように定義しましたvar win = $(window)

于 2012-04-28T14:04:26.827 に答える