我來自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