有什么区别:
pause: function () {
this.state.gamePaused = true;
},
和
function pause() {
this.state.gamePaused = true;
}
有什么区别:
pause: function () {
this.state.gamePaused = true;
},
和
function pause() {
this.state.gamePaused = true;
}
第一个示例可能是对象的一部分,这意味着 pause 是 Javascript 对象的函数,第二个示例 pause 作为独立函数。
我希望看到第一个示例,例如:
var someObject = {
pause: function () {
this.state.gamePaused = true;
},
anotherProperty : "some value"
}
因此它的用法如下:
someObject.pause();
另一方面,第二个示例的用法如下:
pause();
两者都是函数(又名方法),只是它们以两种不同的方式声明以在两种不同的设置中使用。
在 JS 中,您可以像这样定义对象:
var obj = {
flagVariable: false,
intVariable: 115,
stringVariable: 'hello world',
functionVariable: function() { alert("Hello world!"); }
}
在这个例子中,对象的最后一个属性是一个函数。这是一个匿名函数,这意味着它本身没有被命名。这就是为什么'function'和'()'之间没有名字的原因。因此,您可以使用分配给它的变量来引用它,如下所示:
foo.functionVariable();
您还可以传递它并通过分配给它的任何变量的名称来执行它:
var callback = foo.functionVariable;
callback();
你也可以在任何地方声明函数,所以在全局范围内你可以说:
function pause () { alert("Hello world!"); }
这定义了一个命名函数,它可以在任何地方按名称执行:
pause();
顺便说一句,这也可以传递:
var callback = pause;
callback();
ECMAScript 将方法定义为作为属性值的函数。因此,当您将函数放在对象上时,我们将其称为该对象的方法。
所以要回答这个问题,第一个是方法。
函数是一个属性的值。
注意 当函数作为对象的方法被调用时,对象作为其
this
值传递给函数。
附加到一个对象,这仍然是一个函数,但称为一个方法。它附加到对象,它的this
参数指的是该对象。像这样称呼它:obj.pause()
该函数定义在全局命名空间中,可以从任何地方调用,并附加到window
对象上。this
在函数中引用window
对象。简单地这样称呼它:pause()
请注意,这两个函数实际上都是方法,尽管后者很少被称为一个。