2

我正在开发一个编写为对象文字的应用程序框架,为了简单起见,我想做两件事:

  1. 使对象全局可用
  2. 对所有引用使用对象名称(全局定义)(与 using 相比this

所以,我已经进行了一些测试,完成了研究,并且没有找到任何不采用这种方法的充分理由。我的问题是 - 我错过了什么吗?性能测试实际上似乎有利于我的方法,从逻辑层面来看,我没有看到任何问题。查看其他框架,我看到了混合,但我知道该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.

就像我说的那样,我已经看到了这种情况的混合,我想我只是想知道这是否会导致长期问题,或者这是否无足轻重。

4

1 回答 1

3

就限制而言,首先想到的是您只能拥有该对象的一个​​实例。尝试初始化一个新对象会清除该对象。

this使用全局变量名而不是全局变量名的另一个原因是,this即使变量名发生变化,它也会指向正确的对象。

如果您真的希望这是一个名称永远不会更改的“创建一次”全局对象,那么这种技术在技术上并没有错。但它不能在任何其他情况下使用。如果需求发生变化(例如,如果您使用的库导致与所选变量名发生命名冲突),考虑编写更具适应性的代码可能更明智

Usingthis使您可以灵活地重命名变量并在不同的上下文中传递它,而无需担心跟踪变量名称。如果出现命名冲突,它也将很容易更改。

于 2013-02-10T19:39:38.900 回答