灵活访问封装数据对象/如何分析性能的方法?

时间:2015-05-13 23:20:09

标签: javascript performance object data-access

今天我想到了一种高度灵活的访问数据集的方法,这些方法是使用闭包封装的。

我还在编写我的WebGL内容,所以我的结果示例与它相关(坐标/旋转状态)。然而,它很容易转移到其他环境。请看一下:

function RandomObject(x, y, z){
    var rotX = 0;
    var rotY = 0;
    var rotZ = 0;

    this.data = {
        "position" : {
            set: function(position){x = position[0]; y = position[1]; z = position[2];},
            get: function(){return {"x": x, "y" : y, "z" : z};},
            x: function(value){return value? (x = value) :  x;},
            y: function(value){return value? (y = value) :  y;},
            z: function(value){return value? (z = value) :  z;},
            readOnly: true
        },
        "rotation" : {
            set: function(rotation){x = rotation[0]; y = rotation[1]; z = rotation[2];},
            get: function(){return {"x": rotX, "y" : rotY, "z" : rotZ};},
            x: function(value){return value? (rotX = value) : rotX;},
            y: function(value){return value? (rotY = value) : rotY;},
            z: function(value){return value? (rotZ = value) : rotZ;},
            readOnly: false
        }
    };
}

我的目的是访问使用此构造函数生成的对象的数据,如下所示:

var set = "position";
var coordinate = "z";
object.data[set][coordinate](5);

readOnly只是用于检查用户是否应该能够修改这些值。是的,我可以重构那些return value? (x = value) : x;行,但我认为没有其他功能它更具可读性。

第一个问题:你在使用它时发现了一些可能出错的东西吗?

第二个问题:你知道处理这种情况的更好方法吗?

第三个问题:性能如何,与普通标准的getter / setter相比,这需要更多的资源吗?你知道如何对此进行基准测试吗?

感谢阅读和您的建议。

澄清一下:我不想写世界上最快的JavaScript应用程序,但我只是不希望内存 leaks 麻烦出现,当我实例时......让我们说200左右这些物体中有300个。

0 个答案:

没有答案