官术网_书友最值得收藏!

Questions

1.1. Classes as first-class objects: We saw that functions are first class objects, but did you know classes also are? (Though, of course, speaking of classes as objects does sound weird...) Study this example and see what makes it tick! Be careful: there's some purposefully weird code in it:

      const makeSaluteClass = term =>
class {
constructor(x) {
this.x = x;
}

salute(y) {
console.log(`${this.x} says "${term}" to ${y}`);
}
};

const Spanish = makeSaluteClass("HOLA");
new Spanish("ALFA").salute("BETA");
// ALFA says "HOLA" to BETA

new (makeSaluteClass("HELLO"))("GAMMA").salute("DELTA");
// GAMMA says "HELLO" to DELTA

const fullSalute = (c, x, y) => new c(x).salute(y);
const French = makeSaluteClass("BON JOUR");
fullSalute(French, "EPSILON", "ZETA");
// EPSILON says "BON JOUR" to ZETA

1.2. Factorial errors: Factorials, as we defined them, should only be calculated for non-negative integers. However, the function we wrote doesn't verify if its argument is valid or not. Can you add the necessary checks? Try to avoid repeated, redundant tests!

1.3. Climbing factorial: Our implementation of factorial starts multiplying by n, then by n-1, then n-2, and so on., in what we could call a downward fashion. Can you write a new version of the factorial function, that will loop upwards?

主站蜘蛛池模板: 灵武市| 科技| 义乌市| 阜城县| 怀安县| 宁武县| 类乌齐县| 定边县| 六安市| 高邑县| 汝阳县| 阿克苏市| 乌鲁木齐县| 同江市| 双峰县| 尚志市| 且末县| 祥云县| 盘山县| 和龙市| 鄢陵县| 鄯善县| 任丘市| 湖口县| 雅江县| 灵丘县| 介休市| 津南区| 祁东县| 赫章县| 彩票| 正镶白旗| 内黄县| 马鞍山市| 宾阳县| 遂溪县| 双鸭山市| 印江| 西城区| 澄城县| 吴江市|