javascript - JavaScript 对象中的不同函数声明之间有什么区别(如果有的话)?
问题描述
我有一个 JavaScript 对象:
var methods = {
classStyle() {
console.log('Class style function');
},
traditionalStyle: function() {
console.log('Traditional style function');
},
arrowStyle: () => {
console.log('Arrow style function');
}
};
methods.classStyle();
methods.traditionalStyle();
methods.arrowStyle();
输出如预期:
(index):70 Class style function
(index):74 Traditional style function
(index):78 Arrow style function
我的问题是:
- 这些不同的声明方法之间有什么区别吗?
- 是看个人喜好吗?还是内部运作方式发生变化?
- 使用不同的样式时有什么注意事项吗?
解决方案
“类风格函数”(速记方法)与常规函数非常相似。唯一的区别是它不能用作构造函数(即用 调用new
),因此它没有prototype
属性。至于箭头函数,请参阅箭头函数与函数声明/表达式:它们是否等效/可交换?. 简而言之,箭头函数不绑定自己的this
and arguments
,也不能与 . 一起使用new
。
是看个人喜好吗?还是内部运作方式发生变化?
在 ES6+ 中,没有理由在对象中使用传统的函数语法,因为速记方法语法更简单、更安全,因为如果你不小心尝试将方法用作构造函数,就会出错。至于箭头函数,只有在不需要使用this
.
推荐阅读
- android - Android Studio 看不到所有设备
- javascript - 使用 Ecmascript 6 中省略值的默认值初始化对象的最佳方法是什么?
- http - Activemq 5.14.5 http连接器读取超时
- regex - 如何从中正则表达式类名?
- javascript - 在 Vue.js 中的路由器链接的“:to”属性中传递一个道具
- python - 熊猫系列替换值
- linux-device-driver - i.MX6 PMIC 中 RTC 备用电池的稳压器配置
- python - 将列表附加到列表列表
- amazon-web-services - 将 CNAME 目标更改为 S3 存储桶
- json - 如何将结构序列化为 io::Write in a loop