这两种声明之间有什么区别。我认为两者的作用方式相同。第一个是函数对象,第二个是变量对象何时使用请帮助。
function timers() {
function start() {}
function end() {}
};
var add = {
start: function () {
some block of code
},
end: function () {
some block of code
},
};
答案 0 :(得分:3)
两者完全不同。
在您的第一个示例中,start
和end
只能在timers
内访问,并且每次调用时都会创建新的start
和end
timers
1}}。 timers
是对函数的引用。当您需要在timers
内只需要在其中而不是在其中的函数时,您可以使用此格式,并且可以访问特定于timers
调用的信息。创建
在第二个示例中,创建了一个对象,其中start
和end
属性引用了函数。这些可以通过add.start
和add.end
进行调用。 add
是对非功能对象的引用。当你想要一个可以通过该对象引用使用的具有函数的对象时,你可以使用它。
答案 1 :(得分:1)
1。 timers
是函数声明,其中包含2个嵌套函数start
和end
。要创建timers
的新对象,您需要使用类似var objTimer = new timers();
的构造函数,但由于函数start
和end
嵌套在timers
内,因此如果没有曝光,则无法将其称为objTimer.start()
或objTimer.end()
。
function timers() {
function start() {}
function end() {}
};
因此,如果我们将上面的代码修改为类似的内容,则返回包含要公开的成员的对象,那么它将与您的第二个代码类似。
function timers() {
function start() {}
function end() {}
return {
startPublic : start,
endPublic : end
}
};
2。 add
是一个对象文字,其中包含2个函数start
和end
。在这种情况下,由于start
和end
属性是公开的,因此您可以将其称为add.start()
和add.end()
。
var add = {
start: function () {
some block of code
},
end: function () {
some block of code
},
};