Javascript 对象和函数之间方法调用的差异

Javascript 对象和函数之间方法调用的差异,javascript,Javascript,以下是代码和: 嘿,小伙子们,这两种方法调用有什么区别。 我必须将test2作为Inmmediate调用函数执行,以确保它工作正常。这意味着要把煤运到纽卡斯尔吗?哪一个更好或者我应该在什么情况下使用它们 嘿,小伙子们,这两种方法有什么区别 呼叫 两个结果对象之间没有显著差异,因为您当前拥有它们 哪一个更好或者我应该在什么情况下使用它们 第二种方案为您提供了在闭包中包含一些私有变量的选项,您的方法可以这样使用: var test2 = function(){ var cnt = 0;

以下是代码和:

嘿,小伙子们,这两种方法调用有什么区别。 我必须将test2作为Inmmediate调用函数执行,以确保它工作正常。这意味着要把煤运到纽卡斯尔吗?哪一个更好或者我应该在什么情况下使用它们

嘿,小伙子们,这两种方法有什么区别 呼叫

两个结果对象之间没有显著差异,因为您当前拥有它们

哪一个更好或者我应该在什么情况下使用它们

第二种方案为您提供了在闭包中包含一些私有变量的选项,您的方法可以这样使用:

var test2 = function(){
    var cnt = 0;
    return {
        value : "sss",
        func1 : function(){
            console.log(this.value);
        },
        getCnt: function() {
            return ++cnt;
        }
    };
}();

test2.getCnt();    // 1
test2.getCnt();    // 2

当需要这些私有变量时,可以使用第二种方案。否则,第一个选项会更简单,只需要一次函数调用。

在第一种方法中,如果将其分配给
原型
,则会用全局
对象
覆盖构造函数。这是值得注意的

第二种方法没有这个问题


下面是我写的一篇文章,详细讨论了这一点:

第一篇文章是具有定义属性和方法的简单对象文字。 见:

第二个是立即调用的函数表达式(IIFE) 返回包含其属性和方法的对象文字


当您想使用其中一个时,它是当前情况的指示器,但第二个使您能够拥有私有“东西”,并用于。

是否应该是
test2().func1()
?没有区别-
test
的值是一个对象,就像
test2
的值一样。第二个问题太宽泛。
test2
创建了一个闭包,而
test
dosen't可能的重复-@nich添加到我的答案中。@nich-这回答了你的问题吗?
var test2 = function(){
    var cnt = 0;
    return {
        value : "sss",
        func1 : function(){
            console.log(this.value);
        },
        getCnt: function() {
            return ++cnt;
        }
    };
}();

test2.getCnt();    // 1
test2.getCnt();    // 2