JavaScript全局对象引用与'这'
JavaScript Global Object referencing vs 'this'
我正在开发一个作为对象文字编写的应用程序框架,为了简单起见,我想做两件事:
- 使对象全局可用
- 对所有引用使用对象名称(全局定义)(相对于使用
this
)
所以,我做了一些测试,做了一些研究,没有找到任何不采取这种方法的好理由。我的问题是——我是不是错过了什么?Perf测试实际上似乎支持我的方法,从后勤层面来看,我没有看到任何问题。看看其他框架,我看到了一种混合,但我知道this
引用受到了许多程序员的尊敬。
供参考。。。
我的方法的一个非常简单的例子:
var myobj = {
someVal: 'foo',
init: function(){
// Make myobj available globally
window.myobj = myobj;
// Fire off a method
myobj.doStuff();
},
doStuff: function(){
// Just print out the contents...
console.log(myobj.someVal);
}
}
myobj.init();
请注意,这些引用都是全局引用,而不是this
。
正如我所说,我看到了这一切的混合,我想我只是想知道这是否会导致长期的问题,或者这是一场无事生非的闹剧。
就限制而言,首先想到的是您只能拥有该对象的一个实例。尝试初始化一个新对象会擦除该对象。
使用this
而不是全局变量名的另一个原因是,即使变量名发生更改,this
也会指向正确的对象。
如果你真的希望这是一个"创建一次"的全局对象,其名称永远不会更改,那么这种技术在技术上并没有错。但它不能用于任何其他情况。如果需求发生变化(例如,如果您使用的库与所选变量名称发生命名冲突),那么考虑编写更具适应性的代码可能更明智。
使用this
可以灵活地重命名变量并在不同的上下文中传递它,而不用担心跟踪变量名。如果出现命名冲突,也可以很容易地进行更改。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- javascript无法重新定义函数内部的全局对象
- Javascript,从静态函数中打印全局对象
- 如何使用object.assign()从其他对象引用基本对象属性
- 返回 JavaScript 类值而不是对象引用
- Facebook:当发布期望对象引用时显示打开的图形对话框
- Javascript-如何从字符串/对象引用回调
- 将其用于对象引用
- 如何将对象引用传递到 mootools 中另一个对象的构造函数中
- Javascript:将类/对象引用设置为 NULL,内存中的子对象/类会发生什么
- 在 Jquery 中,我可以存储对象引用并在以后使用它吗?
- 将对象函数传递给请求动画帧时丢失对象引用
- JavaScript ecma6中的对象引用
- 在处理程序之外传递对象引用,即使其全局化
- 引用错误和全局对象
- 以严格模式在未知环境中获取对全局对象的引用
- Javascript硬编码对象可以作为参数,但不能引用全局对象
- 如何存储对具有角度的对象或全局对象的引用
- 将全局对象存储到数组中只是创建对这些对象的引用吗
- JavaScript全局对象引用与'这'