Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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_Oop_Scope - Fatal编程技术网

Javascript本地作用域和使用对象-最佳实践?

Javascript本地作用域和使用对象-最佳实践?,javascript,oop,scope,Javascript,Oop,Scope,我目前正在从事使用大量javascript文件的大型项目。 然后我开始学习使用局部作用域和对象 我真正不明白的是如何将它们称为本地范围? 例如,如果我在文件-a中的本地作用域中创建了一个对象,我如何将它们用作document.ready scope文件-b中的函数 我知道你可以在网上找到这个,但是互联网上大量的javascript让我失去了动力,并且找不到好的例子或材料。有什么帮助吗?不确定,但我认为您可能是指在JavaScript中使用名称空间,以避免将所有函数添加到主窗口对象 丑陋的方式 假

我目前正在从事使用大量javascript文件的大型项目。 然后我开始学习使用局部作用域和对象

我真正不明白的是如何将它们称为本地范围? 例如,如果我在文件-a中的本地作用域中创建了一个对象,我如何将它们用作document.ready scope文件-b中的函数


我知道你可以在网上找到这个,但是互联网上大量的javascript让我失去了动力,并且找不到好的例子或材料。有什么帮助吗?

不确定,但我认为您可能是指在JavaScript中使用名称空间,以避免将所有函数添加到主窗口对象

丑陋的方式

假设您有3个与CAT相关的功能:

Function AddCat(cat) {

}

Function DeleteCat(catId) {

}

Function BreedCat(cat,cat) {

}
按照这些项目的编码方式,它们是全球可用的。这不仅会扰乱窗口对象,而且很难在这些函数之间以谨慎的方式共享数据

只要加载此js文件,应用程序中的任何函数都可以通过调用
AddCat()

清洁剂

为了解决这个问题,我们可以在这里创建一个充当“名称空间”的Cats对象:

现在,您只向windows类添加了一个对象:Cats。此外,web应用程序中的其他方法可以通过调用
Cats.AddCat()
调用这三个项目中的任何一个

这使您可以将整个系统中的所有Cat数据封装在一个“名称空间”中,因此更易于读取

这可以得到更详细的信息。通过封装这样的项,您可以开始从代码的其余部分隐藏所有cat例程所需的变量

关于这种类型的名称空间(包括大量的详细信息)有一套非常好的资源,其中的链接可以引导您深入了解


这就是你想要的吗?

范围界定的全部要点是其他文件无法访问你的变量。你需要将代码压缩到一个文件中,或者适当地公开全局变量。没有对OPS部分进行研究来找到答案。正如事后调查所承认的那样。那么,为什么你要在那是同一页吗?这样你就不会弄乱其他你非常清楚的代码运行了?是的,这正是我需要知道的。谢谢你花时间向我解释:DNo担心。我喜欢这些东西!一定要检查那些链接。这两个家伙都非常聪明,为我节省了数小时的重构时间。
Cats = {

    AddCat: function(cat) {

    },

    DeleteCat: function(catId) {

    },

    BreedCat: function(cat,cat) {

    }

}