1

我遇到了以下奇怪的行为:

加载期间:

var a = new function() {};
alert(typeof a);          //outputs function instead of object

正如预期的那样,在页面加载后执行完全相同的代码会产生对象而不是函数。

以下确实返回对象,但如果可能,我想避免它:

function b(){}
var a = new b();
alert(typeof a);         //outputs object

我在这里错过了什么吗?为什么第一个例子没有给我一个对象引用而不是一个函数?

测试:

火狐 24

铬 28

IE 10

编辑:

事实证明,这不是浏览器问题,而是 Brackets 实时预览的错误。

<!DOCTYPE html>
<html>
    <head>
        <script>
            var a = new function() {};
            alert(typeof a); //should output 'object' but outputs 'function' in Brackets
        </script>
    </head>
    <body>
    </body>
</html>
4

1 回答 1

0

好吧,当你打电话时

var a = function () {}

你在声明一个函数

但取而代之的是

function b(){}
var a = new b();
alert(typeof a);

你正在实例化 B 函数,它作为一个对象工作,这就是为什么返回对象,问候。

那是您使用新关键字的时候。

于 2013-10-13T01:16:50.957 回答