为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JavaScript中声明名称空间?

如何在JavaScript中声明名称空间?

米脂 2019-06-01 13:50:41
如何在JavaScript中声明名称空间?如何在JavaScript中创建名称空间,使我的对象和函数不会被其他同名对象和函数覆盖?我使用了以下方法:if (Foo == null || typeof(Foo) != "object") { var Foo = new Object();}有没有一种更优雅或简洁的方法来做到这一点?
查看完整描述

4 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我用企业jQuery站点上的方法:

下面是他们的示例,展示了如何声明私有和公共属性和函数。一切都是作为一个自动执行的匿名函数来完成的。

(function( skillet, $, undefined ) {
    //Private Property
    var isHot = true;

    //Public Property
    skillet.ingredient = "Bacon Strips";

    //Public Method
    skillet.fry = function() {
        var oliveOil;

        addItem( "\t\n Butter \n\t" );
        addItem( oliveOil );
        console.log( "Frying " + skillet.ingredient );
    };

    //Private Method
    function addItem( item ) {
        if ( item !== undefined ) {
            console.log( "Adding " + $.trim(item) );
        }
    }}( window.skillet = window.skillet || {}, jQuery ));

所以如果你想访问其中一个公共成员,你可以直接去skillet.fry()skillet.ingredients.

真正酷的是,您现在可以使用完全相同的语法扩展名称空间。

//Adding new Functionality to the skillet(function( skillet, $, undefined ) {
    //Private Property
    var amountOfGrease = "1 Cup";

    //Public Method
    skillet.toString = function() {
        console.log( skillet.quantity + " " +
                     skillet.ingredient + " & " +
                     amountOfGrease + " of Grease" );
        console.log( isHot ? "Hot" : "Cold" );
    };}( window.skillet = window.skillet || {}, jQuery ));

第三undefined论辩

第三,undefined参数是值变量的来源。undefined..我不确定它现在是否仍然相关,但是在使用旧的浏览器/JavaScript标准(ECMAScript 5,javascript<1.8.5~Firefox 4)时,全局范围变量。undefined是可写的,所以任何人都可以重写它的值。第三个参数(未传递值时)创建一个名为undefined它的作用域为名称空间/函数。因为在创建名称空间时没有传递值,所以它默认为值。undefined.


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号