在 JavaScript 中调用方法的以下 2 种方式中;
- 我的函数(参数);
- obj.myFunc();
我的问题是;
- 对于它们中的每一个,访问 myFunc() 中的值(对于 params/obj)到底有什么区别
- 对于第一种情况,当我们在 myFunc(), 中使用“this”时,它将引用全局 obj(窗口)。第二种情况呢?
- 使用这两种技术中的任何一种的用例是什么?
您也可以在这两种技术之间添加任何其他显着差异。请建议。
在 JavaScript 中调用方法的以下 2 种方式中;
我的问题是;
- 对于它们中的每一个,访问 myFunc() 中的值(对于 params/obj)到底有什么区别
- 对于第一种情况,当我们在 myFunc(), 中使用“this”时,它将引用全局 obj(窗口)。第二种情况呢?
- 使用这两种技术中的任何一种的用例是什么?
您也可以在这两种技术之间添加任何其他显着差异。请建议。
由于您没有提供足够的上下文,我将假设您的两个函数调用:
1. myFunc(params)
2. obj.myFunc()
对应于 和 的以下myFunc()
定义obj.myFunc()
:
function myFunc(params) { }
var obj = {
myFunc: function() { }
};
第一次调用myFunc(params)
是对作为参数传递的全局函数 myFunc()
的调用。将引用浏览器内部的全局对象(您可以通过执行测试它,它将返回)params
this
window
window.myFunc === myFunc
true
第二次调用obj.myFunc()
是调用对象内部的方法 。会指,不是。myFunc()
obj
this
obj
window
关于用例,这将取决于您的设计,但显然不建议使用全局函数,因为它们会污染全局命名空间(即,您可能会myFunc()
意外地重新定义全局而不注意它)。
当您需要伪 javascript命名空间时,第二种方法很常见
我将重新提出您的问题:
3-案例:your_obj.function():这个通常用于单页Web应用程序,或者您有一页有许多模块,并且您想将模块分开以进行维护。而 myfunction(args) 是一种全局用法。
2 - 您可以通过以下方式调用它:window.your_obj.function()
1 - 我不确定你的意思:)
这些是我的意见。