Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这些函数方法形式之间是否存在任何实际差异/特殊性?_Javascript_Object - Fatal编程技术网

Javascript 这些函数方法形式之间是否存在任何实际差异/特殊性?

Javascript 这些函数方法形式之间是否存在任何实际差异/特殊性?,javascript,object,Javascript,Object,关于从对象外部“调用”的方法,我能说下面这三种方法在我的代码中的作用是相同的吗 例如: var boat = { peter: () => {console.log("a")}, james: function() {console.log("b")}, john() {console.log("c")} } 这些是我知道如何在对象/变量内部应用函数的方法 我想知道每种形式是否有重大区别,因为这三种形式的名称都是一

关于从对象外部“调用”的方法,我能说下面这三种方法在我的代码中的作用是相同的吗

例如:

var boat = 
{
  peter: () => {console.log("a")},
  james: function() {console.log("b")},
  john() {console.log("c")}
}
这些是我知道如何在对象/变量内部应用函数的方法

我想知道每种形式是否有重大区别,因为这三种形式的名称都是一样的:

boat.peter();
boat.james();
boat.john();

在你的例子中没有区别,但是如果你看这个例子

const obj={
someVar:100,
//this=obj here=>日志将打印“100”,因为obj有someVar
函数日志:函数(){
console.log(this.someVar);
},
//this=global(widnow)here=>日志将打印未定义,因为没有someVar
//这与编写varName:function(){console.log(this.someVar);}.bind(window)或
//函数(){console.log(this.someVar);}.bind(this),而this=global(window)
arrowLog:()=>console.log(this.someVar),
//this=obj here=>日志将打印“100”,因为obj有someVar
//这是在es6中编写常规函数的一种更漂亮的方法,当编译到es5时,它看起来就像functionLog
memberFunctionLog(){
console.log(this.someVar);//这里this=obj
}
}
obj.arrowLog();
obj.functionLog();

obj.memberFunctionLog()
超级
在每种情况下的工作方式都不同。有关名称,请参阅。请参阅以了解前两种方法之间的区别。@FelixKling我们也不要忘记
参数
在对象中使用箭头函数不是一个好主意