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

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?

主站蜘蛛池模板: 信宜市| 遂川县| 巴东县| 长顺县| 顺平县| 龙泉市| 台东县| 莫力| 博野县| 宣武区| 准格尔旗| 富裕县| 英吉沙县| 民丰县| 应用必备| 玛曲县| 华宁县| 蓝山县| 江孜县| 遂川县| 平南县| 平潭县| 平遥县| 西华县| 启东市| 新宾| 洪泽县| 通河县| 炎陵县| 库尔勒市| 盐山县| 罗田县| 神池县| 益阳市| 常宁市| 内黄县| 得荣县| 台南市| 兰西县| 唐河县| 壤塘县|