所以我试图弄清楚声明函数的不同方法......以及低内存使用的最佳方法是什么......
我一直在做的方法是方法#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');
}
答案 0 :(得分:1)
方法1和3 是相同的。只是创建对象的不同方式。
方面问题: this.derp
如果您从对象调用方法direclty,则为"derp"
。换句话说,如果您执行this.herp()
,则this
函数中的herp()
将成为您的sayHey
对象。
方法2 也是一样的,除了有一个不必要的函数调用,它没有特别使用创建的变量作用域。您可以在函数内部使derp
为局部变量而不是对象上的属性,这样只能通过herp()
方法访问它。这为变量提供了一些保护。
方法4 正在创建一个本地函数,因此您不能直接在对象上获取它。每种情况都有不同的用例。