Так что я новичок в Javascript, и у меня есть проблема, которая не имеет смысла для меня.Я не могу назначить функцию для члена класса, но я могу назначить ее для переменной.Но я могу назначить лямбду члену класса.
В чем разница между функцией, возвращаемой функцией d3.scaleLinear (), и лямбда-выражением?И почему я могу назначить одно, а не другое члену моего класса?
d3.scaleLinear () возвращает функцию, которая отображает значения домена (в данном случае -1, 0, 1 ... 5) длядиапазон (в данном случае оттенок черного).
Так что это работает:
class Foo {
constructor() {
var color = d3.scaleLinear()
.domain([-1, 5])
.range(["hsl(0,00%,70%)", "hsl(0,0%,0%)"])
.interpolate(d3.interpolateHcl);
alert(color(1));
}
}
var bar = new Foo();
И это тоже работает:
class Foo {
constructor() {
this.color = () => alert("Test")
color();
}
}
var bar = new Foo();
Почему это не работает:
class Foo {
constructor() {
this.color = d3.scaleLinear()
.domain([-1, 5])
.range(["hsl(0,00%,70%)", "hsl(0,0%,0%)"])
.interpolate(d3.interpolateHcl);
alert(this.color(1));
}
}
var bar = new Foo();