【发布时间】:2019-09-19 08:39:27
【问题描述】:
我在 Treehouse 的“介绍 ES2015”课程上,老师展示了这段代码来说明箭头函数,但在这里他将函数实例化为一个类。谁能告诉我怎么可能?
我对对象的了解是,您需要在实例化它之前创建一个类或创建一个文字对象,但这种情况并非如此。
'use strict';
var Person = function(data) {
for (var key in data) {
this[key] = data[key];
}
this.getKeys = () => {
return Object.keys(this);
}
}
var Alena = new Person({ name: 'Alena', role: 'Teacher' });
console.log('Alena\s Keys: ', Alena.getKeys()); // 'this' refers to 'Alena'
var getKeys = Alena.getKeys;
console.log(getKeys());
一切正常,但我不知道为什么。
【问题讨论】:
-
如果我说
class只是创建了一个函数......那我会更让你感到困惑,对吧? ;) -
您可能想阅读developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 以全面了解 JS 中的真正功能
-
@JonasWilms 在说什么,
Class在 JavaScript 中并不存在。class Person {}在 ES 中的转译将是你老师写的:) -
我没有资格给出正确的答案,但它基本上是 JavaScript 如何实现面向对象编程的组合(它是一种基于原型的语言,而不是基于类的语言),事实上函数是 JavaScript 中的对象,是语言创建者的语法选择。恕我直言,不是学习 OOP 最直观的语言。
标签: javascript ecmascript-6 arrow-functions