用于存储网格数据的javascript对象
javascript object for storing grid data
我正在尝试存储一些网格数据(单元格大小和坐标)以供绘制。
我是纯js的新手,所以我遇到了一些困难。
现在我这样计算:
var W = document.width;
var H = document.height;
var w = [80, null, 80, 100];
w[1] = W - w[0] - w[2] - w[3];
var x = [0, w[0], w[0] + w[1], w[0] + w[1] + w[2], w[0] + w[1] + w[2] + w[3]];
var h = [null, 20, 100];
h[0] = H - w[1] - w[2];
var y = [0, h[0], h[0] + h[1]];
但这太难看了。
我想将数据存储到一些对象中,并访问如下字段:
var grid = new Grid ([80, null, 80, 100], [null, 20, 100]);
// 'null' means that value shall be recalculated on window resized
var x1 = grid.x[1];
var w1 = grid.w[1];
// etc ..
// plus, somewhere inside Grid: window.addEventListener('resize', .... )
我想这个问题已经解决了很多次(但我找不到),我不想"发明自行车"。
你能提出解决方案吗。。或者可以链接到相应的文章?
首先:你的英语很好。这个问题很容易理解。
现在,对于实际的问题:看起来你想要一个类。JavaScript类很有趣。有很多关于如何用JavaScript编写类的文档。特别是,我建议你看看这里,这里(不是严格意义上的类,但仍然有很多好的信息),还有这里(无耻的自我插件)。
在你的课堂上,你可以使用Object.defineProperty
来做一些事情,比如:
Object.defineProperty(Grid.prototype, 'x', {
'get': function() {
/* do some calculations */
return value;
}
};
// later on
var x = myGrid.x;
或者,您可以使用沼泽标准功能:
Grid.prototype.x = function() {
/* do some calculations */
return value;
}
// later on
var x = myGrid.x();
就调整大小而言,将事件侦听器附加到resize
事件肯定是正确的。我建议使用jQuery;从长远来看会有帮助的。你的代码看起来像:
$(window).on('resize', function(event) {
/* loop over values */
/* if value is null, recalculate */
});
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值