为什么我会得到这个JavaScript引用错误
我做错了什么。我尝试创建对象,但当我尝试初始化时,我在控制台中遇到了这个错误:我尝试将所有内容放入document.ready并删除,但不起作用。在这两种情况下,我都有一些错误。我对这个愚蠢的问题感到抱歉为什么我会得到这个JavaScript引用错误,javascript,jquery,Javascript,Jquery,我做错了什么。我尝试创建对象,但当我尝试初始化时,我在控制台中遇到了这个错误:我尝试将所有内容放入document.ready并删除,但不起作用。在这两种情况下,我都有一些错误。我对这个愚蠢的问题感到抱歉 ReferenceError: Circle is not defined var obj = new Circle; JS HTML window.Circle().init(); 您已经在另一个函数中定义了“圈”函数,即作为“就绪”处理程序传入的匿名函数。因此,该符号(“圆”
ReferenceError: Circle is not defined
var obj = new Circle;
JS
HTML
window.Circle().init();
您已经在另一个函数中定义了“圈”函数,即作为“就绪”处理程序传入的匿名函数。因此,该符号(“圆”)是该函数的专用符号,对其他代码不可见
您可以这样使其全球化:
window.Circle = {
// ...
};
您还可以将其添加到jQuery命名空间(可能合适,也可能不合适;取决于您正在做什么),或者您可以为应用程序代码开发自己的命名空间。或者,最后,您可以考虑合并jQuery“准备好”代码,以便“圆”对象和使用它的代码都出现在同一个处理程序中。
编辑-另一种可能是将“循环”声明完全移出“就绪”处理程序。如果您所做的只是初始化该对象,并且您的属性值不需要任何需要DOM或其他尚不可用的资源的工作,那么您可以去掉$(function(){…})
包装器。1)您是在函数上下文中分配圆,而不是作为全局。您只能在那里使用它,除非您将其公开给全局用户。
2) 您正在将Circle作为构造函数调用,但Circle不是函数
这解决了两个问题:
var Circle = function () {};
Circle.prototype.init = function () {
console.log('Circle initialized.');
};
var obj = new Circle();
obj.init();
谢谢你的回答。但当我定义window时,我又遇到了TypeError:window.Circle是undefined@Jony可能(不确定为什么)“circle.js”中的处理程序是在另一个处理程序之后调用的。如果您所做的只是定义“Circle”对象,那么代码实际上根本不需要位于“ready”处理程序中。我会延长我的回答。对不起,浪费时间了。但我会照你说的做。在我的对象循环中,我添加了
window.Circle{}
,在我的头脑中,我将whitoutdocument.ready()
functionwindow.Circle.init()代码>@Jony也许你应该编辑你的问题以显示修改后的代码。这是一个非常简单的问题,没有理由不起作用。只需几秒钟就可以再试一次。哇,我完全错过了这个!好主意,我知道。我将对象圆放在单独的文件中。在head标记中,我放置了对象实例,我又犯了一个愚蠢的错误。在您的新代码中:window.Circle().init();--Circle不是函数,您可以只使用window.Circle.init()
$(function(){
window.Circle = {
init: function() {
console.log("Circle initialized");
}
};
window.Circle.init();
});
<head>
<script>
window.Circle().init();
</script>
</head>
window.Circle = {
// ...
};
var Circle = function () {};
Circle.prototype.init = function () {
console.log('Circle initialized.');
};
var obj = new Circle();
obj.init();