我有两种javascript方法(imports
和namespace
)
imports
接受一个字符串参数(例如imports("com.x.y.MyClass")
)并基于string
创建一个相对路径并将其作为脚本(type = text/javascript
)附加到head标记。使用imports
我可以附加项目主页的任何javascript文件。
namespace
可以使用2到3个参数(例如namespace("com.x.y", "MyClass", "google.maps.Marker")
或namespace("com.x.y", "MyClass" )
)
如果我们拨打var clssObj = new com.x.y.MyClass( param1, param2 )
,则会搜索功能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
。
答案 0 :(得分: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中的不良做法。我主要是在这里列出来让你意识到它,并鼓励你避免使用它。
希望这有帮助!