创建静态(类)变量-最佳实践
Creating Static ( Like ) Variables - Best Practice
每次我需要一个静态变量时,我都会将它作为一个属性绑定到使用它并需要它持久化的对象。
特别是,这里的这个索引(MT.MAOrb.startR.index
)我需要是静态的,或者保持它的值,直到回调再次调用该函数。
使用这个表格是最好的方法吗?
MT.MAOrb.startR.index
/**
** MAOrb
*/
MT.MAOrb =
{
pre : function() {
var o_p = {
model : 'MAOrb'
};
return o_p;
},
post : function( o_p ) {
MT.MAOrb.startR( o_p );
},
startR: function( o_p ){
var sky = document.getElementById( 'Ab1' );
if( MT.MAOrb.startR.index === undefined ) {
var size = Object.size( o_p );
console.log( 'size' + size );
var index1 = MT.MAOrb.random( 0, size - 1 );
console.log( 'index1' + index1 );
MT.MAOrb.startR.index = index1;
MT.MAOrb.startR.o_p = o_p;
}else{
MT.MAOrb.startR.index++;
}
var image_element = MT.MAOrb.makeElement( MT.MAOrb.startR.o_p[ MT.MAOrb.startR.index ] );
sky.appendChild( image_element );
MT.MAOrb.moveLinear( image_element );
},// ....more code here
};
如果你试图模拟一个公共静态属性,那么这是一种完全可以的方法。
JavaScript不是一种经典的面向对象语言。它是典型的。
一个分歧是,在语言中确实没有静态的概念。
只要你不介意另一个对象可以直接读取和修改属性,你的方法就完全可以了。
Javascript没有静态变量与非静态变量的概念:一切都只是对象的属性。因此,做静态变量没有正确或错误的方法,只有做类静态变量的正确或错误方法。
话虽如此,在您所做的过程中,将变量添加为固定(类似模块)对象的属性几乎是您的最佳选择(即最佳实践)。除非你使用的是像Backbone.js这样的库,它实际上在"模型"(即它的类系统)中添加了对静态变量的支持。
我想说,这实际上是一种相当奇怪的方法。Javascript提供函数级作用域,您可以通过使用立即调用的函数表达式(IIFE):来利用它
myObject = {
count: (function () { // this function is invoked immediately
var staticCounter = 0;
return function () { // this is the actual 'count' function
return ++staticCounter;
};
}())
};
myObject.count(); // 1
myObject.count(); // 2
这可以被认为是一种更好的方法的一个原因是它完全隐藏了静态变量。如果要执行myObject.count.staticCounter
,则其他一些代码可能正在读取或写入该变量。显然,您不希望发生这种情况,但如果您这样做,您就完全可以保证该变量的范围,这将在未来更容易地进行调试和重构。
相关文章:
- 在javascript函数的循环中设置全局布尔变量的最佳语法
- 在控制器之间传递变量的最佳方式
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 在jquery中设置多个全局变量的最佳方式
- 返回多个变量的 JavaScript 函数:数组与对象.最佳实践是什么
- 保存全局变量以供指令监视的最佳方法
- 将变量传递给AngularJS控制器,最佳实践
- 将全局配置变量传递到手把模板的最佳方式是什么
- 测试变量是否为数组的最佳方法
- 避免节点中全局变量的最佳实践
- 在没有ajax的情况下将多个变量传递到引用页面的最佳方式
- 创建静态(类)变量-最佳实践
- 传递变量:使用模块的最佳实践
- 在本地将单个变量传递给具有多个参数的函数的最佳方法是什么
- 条件变量赋值的最佳方法
- 这是检查变量是否被定义的最佳方法,而不是 null 并等于 “” 或其他任何内容
- 在 Javascript 中访问控制器变量的最佳方法是什么?
- 关联变量及其 ID 的最佳方式
- 缓存变量时,调用它的最佳方法是什么
- 创建用户可以在带有 php 或 JavaScript 的模板中使用的“变量”的最佳方式