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

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?

主站蜘蛛池模板: 黄平县| 三明市| 两当县| 盐源县| 建宁县| 衡阳市| 汽车| 中牟县| 东城区| 遂宁市| 晋中市| 阳东县| 图片| 乌鲁木齐市| 长宁县| 基隆市| 灯塔市| 宁津县| 雷州市| 白水县| 柳江县| 舞钢市| 金华市| 淮北市| 潢川县| 鹿邑县| 姜堰市| 巴林左旗| 涿州市| 盐源县| 建瓯市| 景德镇市| 濉溪县| 营山县| 开封市| 抚州市| 凉城县| 合阳县| 青冈县| 梓潼县| 临西县|