JavaScript错误:";“不是一个构造函数”;
我正在使用backbone.js以及jquery和underline.js 这里是我的一些代码(它还没有做任何事情)。奇怪的是,在点击url“/#用户”时,没有出现错误。唯一发生错误的时候是我单击转到其他哈希,然后单击“上一步”转到“/#用户”。这是我代码的一部分,最后一行是接收错误的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>
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