对象VS调用函数的属性

时间:2013-03-08 19:07:02

标签: javascript oop

所以我试图弄清楚声明函数的不同方法......以及低内存使用的最佳方法是什么......

我一直在做的方法是方法#4,我猜测它是ATROCIOUS。我基本上做了一堆不同的“function XYZ(){ //stuff }”,并一直在调用它来执行动作......或多或少是一种保持所有代码并使其有条理的方式...不是因为性能,内存或任何技术相关原因...任何人都可以参与并解释哪种方法最好? (或者,如果您有自己的方法,请发布)以及为什么?

//method 1
var sayHey = new Object();
    sayHey.derp = 'derp';
    sayHey.herp = function(){
        alert('herp');
    };

//side question: would this.derp = 'derp' be the same as sayHey.derp? if so, would it be better to use this rather than sayHey?


//method 2
var sayHey2 = function() {
    return {
        derp : 'derp',
        herp : function(){
            alert('herp');
        }
    }
}();

//method 3
var sayHey3 = {
    derp: 'derp',
    herp: function(){
        alert('herp');
    }
};

//method 4
var derp = 'derp';
function herp(){
    alert('herp');
}

1 个答案:

答案 0 :(得分:1)

  • 方法1和3 是相同的。只是创建对象的不同方式。

  • 方面问题: this.derp如果您从对象调用方法direclty,则为"derp"。换句话说,如果您执行this.herp(),则this函数中的herp()将成为您的sayHey对象。

  • 方法2 也是一样的,除了有一个不必要的函数调用,它没有特别使用创建的变量作用域。您可以在函数内部使derp为局部变量而不是对象上的属性,这样只能通过herp()方法访问它。这为变量提供了一些保护。

  • 方法4 正在创建一个本地函数,因此您不能直接在对象上获取它。每种情况都有不同的用例。