在javascript中相互访问单例类和内部类
access singleton and inner classes each other in javascript
我对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(){
...
};
};
- 我希望jCanvas是单例类对象。 在jCanvas对象中,有许多单例类,如DrawingManager, MouseState, Color, BrushMode。还有2个非单例类(Point, DrawInfo)
- 我想要的是,在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中的单例类没有意义。或者创建一个构造函数(Java人员的"类")来实例化多个对象,或者创建一个对象。创建一个只使用一次的构造函数,然后让代码检查是否实际上只使用一次,这是没有意义的。创建一个对象。
错误的原因可能是(但我可能是错的,我猜你的代码的其余部分)var x = function ...
和function name() ...
形式之间的误解。威特:
var a = function() { console.log("a"); }
function b() { console.log("b"); }
a(); // a
b(); // b
c(); // c
d(); // TypeError: d is not a function
function c() { console.log("c"); }
var d = function() { console.log("d"); }
它们实际上是相同的,但它们是否被提升到作用域的顶部是不同的。var d
被提升,就像function c() { ... }
一样——所以变量d
将存在,但将是undefined
,因为赋值没有被提升。拥有两种风格的函数声明是不一致的,除非你有一个很好的理由;
相关文章:
- google在类内映射javascript directionsService.route请求:将类实例传递给回调函数
- 和兼容的单例骨干模型
- 有状态单例模块
- 在什么情况下我们需要在javsacript中实现单例类
- 如何使用 JavaScript 隐藏内部类元素
- j查询开关单击类图片更改
- 单击跨度内的隐藏文件输入会导致RangeError
- 如何将一个单例传递给另一个对象,使该对象的所有实例都引用同一个单实例
- jQuery:如何将事件附加到类内新创建的元素
- 处理类内的事件(原型)
- 使用Ext.Ajax.request使ExtJS单例返回对象
- 原始值被称为单例的现象是什么?
- 创建命名空间 Javascript 单例类的对象
- 如何使用Gulp和Babelify (Babel + Browserify)编译单例和类
- 在CoffeeScript中为我的单例类定义属性getter
- 从ES6模块导出单例类的利弊
- 如何在单击按钮内切换类
- 在javascript中相互访问单例类和内部类
- 如何使内部类属性采用父类属性的值
- JQuery单击类内的链接