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我们也不要忘记参数
在对象中使用箭头函数不是一个好主意