2011-07-18 67 views
-1

我有兩個JavaScript方法(imports,並namespaceimports有一個字符串參數(如imports("com.x.y.MyClass"))和基於string它創建一個相對路徑,並追加其頭標記爲腳本(type = text/javascript)。使用imports我可以附加我的項目主頁的任何JavaScript文件。是否可以在javascript函數變量中插入外部變量?

namespace如果我們調用var clssObj = new com.x.y.MyClass(param1, param2)然後它搜索功能MyClass,如果它存在調用它可能需要2到3 PARAMATERS(如:namespace("com.x.y", "MyClass", "google.maps.Marker")namespace("com.x.y", "MyClass")

imports("com.x.y.HelperClass1"); 
imports("com.x.y.HelperClass2"); 
imports("com.x.z.OtherClass"); 
namespace("com.x.y","MyClass","MyBaseClass").Class = function(){ 

var ... 
.. 
.; 
function privateFunc(){ 
    this.baseclassFunction(); \\ since Myclass is a prototype of MyBaseClass 
    var otherClass = com.x.z.OtherClass(); 
} 

this.publicFun = function(){ 
    privateFunc(); 
}; 
this.MyClass = function(param1, param2){ 
    this.base();// calling base class costructor 
    var helperObj1 = com.x.y.HelperClass1(); 
    var helperObj2 = com.x.y.HelperClass2(); 
}; 
}; 

是否可以將所有導入的類添加爲MyClass私有變量?如在Java中,而不是使用com.x.y.HelperClass2,我們只使用HelperClass2

回答

1

聲明:我不知道所有這些「進口」和「命名空間」業務是關於什麼的。這些都不是JavaScript本地概念,所以它們必須由問題陳述中未命名的某個庫提供。話雖如此,你可以很容易地使局部變量指向對象的屬性,並在這樣做時,爲自己創建一個速記符號。例如:

function privateFunc(){ 
    var OtherClass = com.x.z.OtherClass; 
    this.baseclassFunction(); // since Myclass is a prototype of MyBaseClass 
    var otherClass = OtherClass(); 
} 

另一種選擇(在列出所有我能想到的利息)是使用with

function privateFunc(){ 
    this.baseclassFunction(); // since Myclass is a prototype of MyBaseClass 
    with (com.x.z) { 
     var otherClass = OtherClass(); 
    } 
} 

with通常被認爲是不好的做法在JavaScript中。我主要是在這裏列出來讓你意識到這一點,並鼓勵你避免使用它。

希望這會有所幫助!

+0

對不起,感到困惑。導入和命名空間是我自己的功能。和命名空間使用它的參數來創建一個像com.x.y.MyClass = function(){}這樣的函數,在java com中,x和y是文件夾。導入將其參數com.x.y.Myclass轉換爲「javascript/x/y/MyClass.js」。我正在嘗試創建一種方法來幫助我編寫代碼,就像我以前用java編寫的代碼一樣。除了將所有導入的javascript函數作爲文件函數的私有變量(例如MyClass)之外,我能夠做所有事情。 – Anoop

相關問題