为什么我会得到这个JavaScript引用错误

为什么我会得到这个JavaScript引用错误,javascript,jquery,Javascript,Jquery,我做错了什么。我尝试创建对象,但当我尝试初始化时,我在控制台中遇到了这个错误:我尝试将所有内容放入document.ready并删除,但不起作用。在这两种情况下,我都有一些错误。我对这个愚蠢的问题感到抱歉 ReferenceError: Circle is not defined var obj = new Circle; JS HTML window.Circle().init(); 您已经在另一个函数中定义了“圈”函数,即作为“就绪”处理程序传入的匿名函数。因此,该符号(“圆”

我做错了什么。我尝试创建对象,但当我尝试初始化时,我在控制台中遇到了这个错误:我尝试将所有内容放入document.ready并删除,但不起作用。在这两种情况下,我都有一些错误。我对这个愚蠢的问题感到抱歉

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{}
,在我的头脑中,我将whitout
document.ready()
function
window.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();