Javascript中的名称空间别名
有人能给我一些建议吗- 1) 如何使用“Base”变量 2) 在callShowMsg函数中,使用局部变量“ns”为命名空间别名 是否可以使用全局变量来别名名称空间?它将避免在每个函数中声明局部变量的需要 提前谢谢 我的密码是Javascript中的名称空间别名,javascript,Javascript,有人能给我一些建议吗- 1) 如何使用“Base”变量 2) 在callShowMsg函数中,使用局部变量“ns”为命名空间别名 是否可以使用全局变量来别名名称空间?它将避免在每个函数中声明局部变量的需要 提前谢谢 我的密码是 var Base = namespace("MyCo.MyApp.Myprogram"); MyCo.MyApp.Myprogram = { showMsg: function (pMsg) { al
var Base = namespace("MyCo.MyApp.Myprogram");
MyCo.MyApp.Myprogram =
{
showMsg: function (pMsg)
{
alert(pMsg);
},
callShowMsg: function (pMsg)
{
var ns = MyCo.MyApp.Myprogram;
ns.showMsg('Hello');
}
}
类似这样的内容:(YUI提供了一些自定义名称空间的回退)。尽管我相信您不必“名称空间”或引用obj。只需将其称为“this”。
因此,如果您在obj中,可以调用如下方法:this.showMsg('somevalue')
函数createNamespace(){
var uniqueNS=“MyCo”;
变量a=参数,o,i=0,j,d,arg,
ns=这个,
句号“.”;
//将命名空间强制转换为MyCo
ns.uniqueNS=ns.uniqueNS | |{};
ns=ns.uniqueNS;
对于(;i-1){//如果不存在“”,则跳过此项
d=参数拆分(期间);
对于(j=(d[0]==uniqueNS)?1:0;j
我不认为有像你上面写的那样的名称空间函数,
你可以这样做:
var MYAPPLICATION = {
calculateVat: function (base) {
return base * 1.21;
},
product: function (price) {
this.price = price;
this.getPrice = function(){
return this.price;
};
},
doCalculations: function () {
var p = new MYAPPLICATION.product(100);
alert(this.calculateVat(p.getPrice()));
}
}
或者,如果要使用嵌套名称空间,可以尝试以下操作:
var MYAPPLICATION = {
MODEL: {
product: function (price) {
this.price = price;
this.getPrice = function(){
return this.price;
};
}
},
LOGIC: {
calculateVat: function (base) {
return base * 1.21;
},
doCalculations: function () {
var p = new MYAPPLICATION.MODEL.product(100);
alert(this.calculateVat(p.getPrice()));
}
}
}
名称空间
函数返回的值。这不是一个标准的JS函数,它可能特定于您正在使用的库,因此我无法回答var ns = {
callShowMsg: function (pMsg)
{
ns.showMsg('Hello');
}
}
MyCo.MyApp.Myprogram = ns;
您还可以将ns放在初始化函数中,而不是放在脚本顶层,从而使其成为局部函数而不是全局函数。最常见的方法是使用立即调用的匿名函数:
(function(){
var ns = {
callShowMsg: function (pMsg)
{
ns.showMsg('Hello');
}
}
MyCo.MyApp.Myprogram = ns;
}());
在我看来,这不是一个有效的JavaScript。@在我看来,这四个代码完全有效<代码>名称空间可能只是一个定义嵌套对象的函数。@meagar感谢您的澄清。:)
(function(){
var ns = {
callShowMsg: function (pMsg)
{
ns.showMsg('Hello');
}
}
MyCo.MyApp.Myprogram = ns;
}());