当前位置: 首页 > 面试题库 >

JavaScript中的“ new function()”,其小写字母“ f”

沈华皓
2023-03-14
问题内容

我的同事一直在使用“ new function()”和小写的“
f”来定义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;
        };
    };

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

但是,我在任何地方都没有看到对此技术的任何参考。甚至道格拉斯·克罗克福德(Douglas Crockford)的JSLint也对此抱怨:

  • 奇怪的建设。删除“新”

我们正在生产中使用这种技术,它似乎运行良好,但是我对此有些担心,因为它在任何地方都没有记录。有人知道这是否有效吗?


问题答案:

我之前已经看过该技术,它是有效的,您正在使用函数表达式,就好像它是构造函数一样。

但是恕我直言,您可以使用自动调用函数表达式来实现相同的功能,我真的不明白new以这种方式使用html" target="_blank">运算符的意义:

var someObj = (function () {
    var instance = {},
        inner = 'some value';

    instance.foo = 'blah';

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

    instance.set_inner = function (s) {
        inner = s;
    };

    return instance;
})();

new操作员的目的是创建新的对象实例,设置[[Prototype]]内部属性,您可以看到[Construct]内部属性是如何实现的。

上面的代码将产生等效的结果。



 类似资料:
  • 问题内容: THIS IS SOMETEXT 我想使该段的首字母大写。 CSS可能吗? 编辑: 我所有的文本都用大写字母。 问题答案: 您可以使用以使段落的每个单词都大写,如下所示: 在 IE4 +中受支持。 这里的例子 。 [16.5大写:“文本转换”属性] 此属性控制元素文本的大写效果。 将每个单词的第一个字符大写;其他字符不受影响。 将每个单词都用大写字母大写: 在此假设下: 我想使它看起来

  • 本文向大家介绍javascript生成大小写字母,包括了javascript生成大小写字母的使用技巧和注意事项,需要的朋友参考一下 主要用到 str.charCodeAt()和 String.fromCharCode()方法 --》使用 charCodeAt() 来获得字符串中某个具体字符的 Unicode 编码。 --》fromCharCode() 可接受一个(或多个)指定的 Unicode 值

  • 我正在尝试使用正则表达式将大写字母替换为相应的小写字母。因此 变成 在Sublime的文本中。如何在同时包含小写和大写字母的单词中使用小写字母?所以它会影响维纳斯,而不是维纳斯。

  • 问题内容: 在Java 6中, 打印i(),但是在Java 7中,它用双点()打印i 。 我知道这是土耳其语字符,但是如何使用此代码使Java 7输出与v6相同的输出? 还要确保该代码可以处理国际文本,而无需对该函数进行硬编码以仅使用土耳其语区域设置。 问题答案: 关于此iLowerCase问题,有一篇非常详细的博客文章 让我尝试总结以下主要部分: 在Java 7中,此方法的确发生了变化,并且与J

  • 我有一个javascript问题,对此我感到非常困惑 编写一个函数stringCase,该函数接受一个大小写字符混合的字符串,并根据字符串具有更多的字母大小写返回全大写或全小写的字符串。如果字符串的大小写字符相等,则将字符串转换为所有小写。不包括任何循环、长度属性或本机方法(例外:toLowerCase() 我可以立即想到一些解决这个问题的方法,比如使用循环检查每个字符,或者使用替换方法和正则表达

  • 问题内容: 我遇到的问题是我无法让我的密码验证程序来检查字符串,以确保其中的一个字符为大写字母,而一个字符为小写字母,它将检查整个字符串中是否存在一个字符。其他,并根据要检查的语句打印错误消息。 我已经查看了该站点和Internet上的答案,但是找不到。这是功课。 下面是我当前的代码。 问题答案: 要确定字符串是否包含大写和小写字符,可以使用以下命令: 这使您可以检查: 本质上,这通过检查Stri