以下两种在JavaScript中调用方法的方法;
我的问题是;
- 对于他们每个人,访问myFunc()中的值(对于params / obj)究竟有什么区别
- 对于第一种情况,当我们在myFunc()中使用“this”时,它将引用全局obj(窗口)。第二种情况怎么样?
- 使用这两种技术中的任何一种的用例是什么?
醇>
您还可以在两种技术之间添加任何其他重要差异。 请建议。
答案 0 :(得分:1)
由于您没有提供足够的上下文,我将假设您的两个函数调用:
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 namespace
时,第二种方法很常见答案 1 :(得分:-1)
我会重新提出你的问题:
3-个案例:your_obj.function():这个通常用于单页Web应用程序中,或者您有多个模块一页,并且您希望将模块分开以便维护。虽然myfunction(args)是全球用途。
2 - 您可以通过以下方式调用它:window.your_obj.function()
1 - 我不确定你的意思:)。
这是我的意见。