Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的名称空间别名_Javascript - Fatal编程技术网

Javascript中的名称空间别名

Javascript中的名称空间别名,javascript,Javascript,有人能给我一些建议吗- 1) 如何使用“Base”变量 2) 在callShowMsg函数中,使用局部变量“ns”为命名空间别名 是否可以使用全局变量来别名名称空间?它将避免在每个函数中声明局部变量的需要 提前谢谢 我的密码是 var Base = namespace("MyCo.MyApp.Myprogram"); MyCo.MyApp.Myprogram = { showMsg: function (pMsg) { al

有人能给我一些建议吗-

1) 如何使用“Base”变量

2) 在callShowMsg函数中,使用局部变量“ns”为命名空间别名

是否可以使用全局变量来别名名称空间?它将避免在每个函数中声明局部变量的需要

提前谢谢

我的密码是

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()));
        }
    }
}
  • 如何使用“Base”变量

    这将取决于
    名称空间
    函数返回的值。这不是一个标准的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;
    }());