相关疑难解决方法(0)

在JavaScript中使用小写"f"的`new function()`

我的同事一直在使用带有小写"f"的"new function()"来定义JavaScript中的新对象.它似乎在所有主流浏览器中运行良好,并且在隐藏私有变量方面似乎也相当有效.这是一个例子:

    var someObj = new function () {
        var inner = 'some value';
        this.foo = 'blah';

        this.get_inner = function () {
            return inner;
        };

        this.set_inner = function (s) {
            inner = s;
        };
    };
Run Code Online (Sandbox Code Playgroud)

一旦使用"this",它就成为someObj的公共财产.所以someObj.foo,someObj.get_inner()和someObj.set_inner()都是公开的.另外,set_inner()和get_inner()是特权方法,因此它们可以通过闭包访问"内部".

但是,我在任何地方都没有看到任何对此技术的引用.甚至Douglas Crockford的JSLint抱怨它:

  • 怪异的建筑.删除'新'

我们在生产中使用这种技术,它似乎运作良好,但我有点担心它,因为它没有在任何地方记录.有谁知道这是否是一种有效的技术?

javascript function object instantiation

106
推荐指数
3
解决办法
3万
查看次数

javascript单例问题

我刚刚在javascript中讨论了单例设计的几个主题.我是100%新设计模式的东西,但正如我所看到的,因为根据定义,Singleton不需要实例化,概念上如果它不被实例化,在我看来它不必被视为从蓝图(类)创建的常规对象.所以我的奇怪是为什么不仅仅考虑一个单独的东西,就像静态可用的东西,包含在某种范围内,应该是全部.

从我看到的主题,他们中的大多数通过传统的javascript制作单身

new function(){} 
Run Code Online (Sandbox Code Playgroud)

然后创建一个伪构造函数.

我只是觉得一个对象字面就足够了:

var singleton = {
   dothis: function(){},
   dothat: function(){}
}
Run Code Online (Sandbox Code Playgroud)

对?或者任何人都有更好的见解?

[更新]:我的观点再次表明,为什么人们只是使用更简单的方法在javascript中制作单身,就像我在第二个片段中所示,如果有绝对的原因请告诉我.我经常害怕这种情况,我简化了很多事情:D

javascript singleton

19
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×2

function ×1

instantiation ×1

object ×1

singleton ×1