JavaScript错误:";“不是一个构造函数”;

JavaScript错误:";“不是一个构造函数”;,javascript,jquery,debugging,backbone.js,underscore.js,Javascript,Jquery,Debugging,Backbone.js,Underscore.js,我正在使用backbone.js以及jquery和underline.js 这里是我的一些代码(它还没有做任何事情)。奇怪的是,在点击url“/#用户”时,没有出现错误。唯一发生错误的时候是我单击转到其他哈希,然后单击“上一步”转到“/#用户”。这是我代码的一部分,最后一行是接收错误的Users=newusers()错误显示“用户不是构造函数”: 如果您感兴趣,请参阅附带的html: <!DOCTYPE html> <html lang="en"> <head>

我正在使用backbone.js以及jquery和underline.js

这里是我的一些代码(它还没有做任何事情)。奇怪的是,在点击url“/#用户”时,没有出现错误。唯一发生错误的时候是我单击转到其他哈希,然后单击“上一步”转到“/#用户”。这是我代码的一部分,最后一行是接收错误的
Users=newusers()错误显示“用户不是构造函数”:

如果您感兴趣,请参阅附带的html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Administration Panel</title>

    <!-- Framework -->
    <script src="/javascripts/jquery.min.js"></script>
    <script src="/javascripts/underscore.min.js"></script>
    <script src="/javascripts/backbone.js"></script>

    <!-- Application -->
    <script src="/javascripts/application.js"></script>

    <script id="usersTemplate" type="text/x-underscore-template">
        asdf
    </script>

</head>
<body>

<div>
<a href="#dashboard">Dashboard</a>
<a href="#users">Users</a>
<a href="#products">Products</a>
<a href="#orders">Orders</a>
<a href="#pages">Pages</a>
<a href="#settings">Settings</a>
</div>

<div id="app"></div>

</body>
</html>

行政小组
asdf

new
只能与作为操作数的函数一起使用

new {}  // Error: ({}) is not a constructor
在上下文中检查
用户的类型
:引发该异常时,它不是一个函数

快乐编码


alert(typeof(Users))
应该做到这一点。结果应该是“函数”,可以用作构造函数。注意失败案例中的情况,并查看下面的原因

一个有问题的场景(对于
用户=新用户
)可能是:从函数
用户
构造对象,然后将对象(现在不是函数/构造函数)分配回
用户
,这样下一个
新用户
将进入kaboom(查看
showusers
dashboard
——这种行为真的是故意的吗?)

“正确”的代码可能是:
var users=新用户;users.blahblah(…)
;也就是说,使用新的局部变量,不要覆盖全局用户变量/属性


该错误仅在“返回”到“#foobar”(a)时产生的原因是没有实际加载新页面,因此JavaScript没有重新加载,并且当前(现在已损坏的
用户
)正在使用kaboom

摘录自:

如果目标元素位于当前文档中,则用户代理可以简单地聚焦目标元素,而无需重新加载它


我认为它的语法错误

当我试图在函数中
返回匿名对象时,就发生了这种情况

 var FalsEextension=false;
 ........
 ........
 return new  { FalsEextension, LargeFile };// wrong Syntax 
正确的语法是

 return { FalsEextension, LargeFile };
你可以这样使用它

ObjectName.FalsEextension

在使用Chrome时,仅在FF中命名模型“history”时遇到此错误,可能是因为我正在加载另一个库。@steve76是的,任何名称冲突都可能导致讨厌的行为。在
history
的情况下,我怀疑它与。在Firefox设置中,“内置”窗口属性不会报告错误,但也不会更改值:和
窗口。历史记录
不是函数/构造函数。需要注意的是,不能将labda函数用作构造函数:
new(()=>{})/(中间值)不是构造函数
您的示例已包含在公认的答案中。它失败的原因与新{}
失败的原因相同。
ObjectName.FalsEextension