gpt4 book ai didi

javascript - 在javascript中互相访问单例和内部类

转载 作者:行者123 更新时间:2023-11-30 12:18:30 25 4
gpt4 key购买 nike

我是 javascript 的新手。我对 javascript 对象感到很困惑!!

我的代码框架如下...

var jCanvas = new function(){
this.init = function(canvasID){
...
};

var DrawingManager = new function(){
drawInfos = []; // DrawInfo objects will be pushed into this
this.mouseState = MouseState.released;
...
};

function DrawInfo(bm, cl, id, x, y){
...
}

function Point(x, y){
...
}

var MouseState = new function(){
...
};

var Color = new function(){
...
};

var BrushMode = new function(){
...
};
};
  1. 我希望 jCanvas 成为单例类 Object。
  2. 在jCanvas对象中,有很多单例类,如DrawingManager、MouseState、Color、BrushMode。还有 2 个不是单例类的类(Point、DrawInfo)
  3. 我想要的是,在 DrawingManager 中,我想访问其他类和单例类对象。

问题是浏览器给出“MouseState is undefined”的错误。

我认为我对 Java、C# 等太熟悉了...我希望我的程序具有良好的结构但是这个 javascript 让我很困惑并且不知道如何制作好的设计模式..

请帮帮我..

最佳答案

要声明函数,请不要使用 new 关键字。仅在创建对象实例时使用它。

在 JavaScript 中,你可以这样声明一个“类”(函数体是构造函数):

function MyClass (arg1) { 
this.myClassProperty = arg1;
}

然后实例化它:

var myObj = new MyClass();

如果要创建单例,最好的方法是使用立即调用的函数:

var MySingleton = (function() {
var myPrivateFunction = function() { ... };
var myExportedFunction = function() { ... };
var myPrivateVar = 5;
return {
myExportedFunction: myExportedFunction
};
})();

在这里,您创建了一个匿名函数并立即运行它。不过,这是一种更高级的概念。或者您可以简单地创建一个对象:

var MySingleton = {
myProperty: 1,
myFunction: function() { ... },
...
};

关于javascript - 在javascript中互相访问单例和内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com