Javascript 为什么有些函数是全局函数,而另一些函数是对象的一部分?

Javascript 为什么有些函数是全局函数,而另一些函数是对象的一部分?,javascript,Javascript,我刚刚探索了一个大型专有项目,发现了一个有趣的时刻: 在一种情况下,作者使用函数作为对象的一部分(对象与相应的HTML页面匹配): 在其他情况下,作者在同一js文件中使用了单独的函数: function separateFunction() { //Some code } 我没有机会问作者。我想这是一些常见的代码模式。 有人能解释一下吗?两者在功能上可能是相同的,但它们的范围和调用方式可能会改变 对象内部的函数。这些函数可用于定义 结构,例如此对象人员: 如您所见,它实际上是对象的

我刚刚探索了一个大型专有项目,发现了一个有趣的时刻: 在一种情况下,作者使用函数作为对象的一部分(对象与相应的HTML页面匹配):

在其他情况下,作者在同一js文件中使用了单独的函数:

function separateFunction() {
    //Some code
}
我没有机会问作者。我想这是一些常见的代码模式。
有人能解释一下吗?

两者在功能上可能是相同的,但它们的范围和调用方式可能会改变

  • 对象内部的函数。这些函数可用于定义 结构,例如此对象人员:
如您所见,它实际上是对象的一部分。这里需要考虑的是,如果像这样定义函数,则需要引用父对象,并且只要父对象存在,该函数就会存在


    person.getFullName();

  • 全局函数。另一方面,全局函数可以独立于任何父对象定义,并且可以从代码中的任何位置调用。例如:

这里要考虑的一些事情,你必须确保你没有覆盖任何其他全局函数,而且你应该确保这是一个全局函数,在整个应用程序中都是需要的。否则,你应该考虑用你的函数创建一个实用程序类,你可以根据需要创建和移除它,优化内存使用,避免丢失代码中的全局函数。它的目的仅仅是构造代码。

PageObject
还可以访问
变量
separateFunction
没有隐式绑定
this
。所以我的分离函数是私有函数(或者类似的函数,因为我建议您可以从任何地方调用它)?模块化通常用于避免污染全局空间。这些模式中的任何一个都不是私有的。

    var person = {
        firstName: 'John',
        lastName: 'Doe',
        getFullName: function () {
            return this.firstName + ' ' + this.lastName;
        }
    }


    person.getFullName();



    function getParameters(){
        //Implementation to get parameters
    }