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

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?

主站蜘蛛池模板: 安阳县| 社旗县| 丹阳市| 桐庐县| 华坪县| 陕西省| 中卫市| 沙田区| 色达县| 沅江市| 东莞市| 莲花县| 敦化市| 杭州市| 太白县| 张家界市| 安仁县| 天祝| 云安县| 兰溪市| 汽车| 百色市| 洪洞县| 安岳县| 叙永县| 鹤壁市| 从江县| 高淳县| 科技| 土默特左旗| 时尚| 江西省| 江安县| 股票| 朔州市| 成武县| 湄潭县| 永寿县| 竹北市| 大荔县| 敦煌市|