1

在 JavaScript 中调用方法的以下 2 种方式中;

  1. 我的函数(参数);
  2. obj.myFunc();

我的问题是;

  1. 对于它们中的每一个,访问 myFunc() 中的值(对于 params/obj)到底有什么区别
  2. 对于第一种情况,当我们在 myFunc(), 中使用“this”时,它将引用全局 obj(窗口)。第二种情况呢?
  3. 使用这两种技术中的任何一种的用例是什么?

您也可以在这两种技术之间添加任何其他显着差异。请建议。

4

2 回答 2

1

由于您没有提供足够的上下文,我将假设您的两个函数调用:

1. myFunc(params)
2. obj.myFunc()

对应于 和 的以下myFunc()定义obj.myFunc()

function myFunc(params) { }

var obj = {
    myFunc: function() { }
};

第一次调用myFunc(params)是对作为参数传递的全局函数 myFunc()的调用。将引用浏览器内部的全局对象(您可以通过执行测试它,它将返回)paramsthiswindowwindow.myFunc === myFunctrue

第二次调用obj.myFunc()是调用对象内部的方法 。会指,不是myFunc()objthisobj window

关于用例,这将取决于您的设计,但显然不建议使用全局函数,因为它们会污染全局命名空间(即,您可能会myFunc()意外地重新定义全局而不注意它)。

当您需要伪 javascript命名空间时,第二种方法很常见

于 2013-07-26T07:14:28.210 回答
-1

我将重新提出您的问题:

3-案例:your_obj.function():这个通常用于单页Web应用程序,或者您有一页有许多模块,并且您想将模块分开以进行维护。而 myfunction(args) 是一种全局用法。

2 - 您可以通过以下方式调用它:window.your_obj.function()

1 - 我不确定你的意思:)

这些是我的意见。

于 2013-07-26T07:03:25.193 回答