我来自Java/C++ OOP背景,并试图进入JavaScript“面向对象”编程。我正在浏览一个小框架的源代码,并发现了一些我觉得奇怪的东西。框架定义了一些全局函数,然后从对象的函数内调用这些函数。为了澄清,这里有一个例子:为什么在JavaScript原型函数中使用全局函数?
var MyObject = function() {
function MyObject() {
this.x = 5;
}
MyObject.prototype.getX = function() {
return _MyObjectGetX(this);
};
return MyObject;
}();
var _MyObjectGetX = function(myObject) {
return myObject.x;
};
我不明白的是全局函数的用法。假设全局函数仅用于一个地方:MyObject.getX()。为什么不把返回移动到函数体?这样行:
var MyObject = function() {
function MyObject() {
this.x = 5;
}
MyObject.prototype.getX = function() {
return this.x;
};
return MyObject;
}();
这个框架是写在CoffeeScript中,然后翻译成JavaScript。 CoffeeScript所做的事情可能是不必要的,或者我完全误解了JavaScript如何处理函数和对象(或者更确切地说,函数为对象)?
这可能会更好地发布一个真实的例子,因为可能有一些原因适用于真实的例子,但不适用于您的制作的例子。 (我不知道是不是这种情况,但似乎很有可能。) – ruakh 2012-02-08 23:43:20
@ruakh 如果布兰登是对的,那么真正的例子中唯一不同的是一些全局函数在多个对象中被调用。但是,有时情况并非如此。 – WillP 2012-02-09 00:04:02
你有框架的CoffeeScript源代码吗?这可能有助于缩小投机范围。 – ruakh 2012-02-09 02:56:49