如何在不覆盖具有相同名称的另一个对象的情况下创建空命名空间对象? [英] How can I create an empty namespace object without overwriting another object with the same name?

查看:75
本文介绍了如何在不覆盖具有相同名称的另一个对象的情况下创建空命名空间对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在研究Yahoo YUI Blog建议的模块模式。

I have been studying as much as I can about the Module Pattern suggested by the Yahoo YUI Blog.

我注意到YUI提供了创建的能力一个新的空名称空间对象,不会覆盖现有的同名名称,如下所示:

I've noticed that the YUI offers the ability to create a new empty namespace object without overwriting an existing one of the same name like so:

YAHOO.namespace(myProject);

然后可以调用它并与一起使用YAHOO.myProject

(提醒:如果 YAHOO.myProject 已经存在,则不会被覆盖)

(Reminder: if YAHOO.myProject already exists it is not overwritten)

如何使用普通的javascript实现类似的效果,而不使用YUI?

How can I achieve a similar effect using plain javascript, and without using the YUI?

请尽可能详细地解释。

可以在找到完整的YUI博客文章。这里

当我正在学习并加强我的javascript知识和技能时,我正在尝试创建自己的个人javascript库(即使我是曾经需要使用它)

As I am learning and srengthening my javascript knowledge and skills, I am trying to create my own personal javascript library (even if I never need to use it)

推荐答案

在你的例子中,它可以像这样工作:

In your example, it could work like this:

if (!YAHOO.myProject) {
    YAHOO.myProject = {};
}
YAHOO.myProject.whatever = true;

或使用您自己的父模块名称:

or using your own parent module name:

var myModule = myModule || {};  // make sure parent is defined without overwriting
if (!myModule.myProject) {
    myModule.myProject = {};
}
myModule.myProject.whatever = true;

或定义自己的命名空间功能:

Or define your own namespace function:

function myNamespace(item) {
    if (!myModule[item]) {
        myModule[item] = {};
    }
}

myNamespace("myProject");
myNamespace.myProject.whatever = true;

这篇关于如何在不覆盖具有相同名称的另一个对象的情况下创建空命名空间对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆