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

没有引用当前构建的对象字面量的名称。您需要使用第二种形式,或者在可以引用的变量中包含值:

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 回答