task 2

PHOTO EMBED

Wed Apr 23 2025 01:40:21 GMT+0000 (Coordinated Universal Time)

Saved by @cciot

1. Prototypal Inheritance and Classes

a. Prototypal Inheritance (old way):
function Animal(name) {
  this.name = name;
}
Animal.prototype.speak = function () {
  console.log(`${this.name} makes a sound.`);
};

function Dog(name, breed) {
  Animal.call(this, name);
  this.breed = breed;
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.speak = function () {
  console.log(`${this.name} barks.`);
};

const dog = new Dog("Buddy", "Golden Retriever");
dog.speak(); // Buddy barks.

b. ES6 Classes (modern way):
class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name);
    this.breed = breed;
  }

  speak() {
    console.log(`${this.name} barks.`);
  }
}

const dog2 = new Dog("Max", "Labrador");
dog2.speak(); // Max barks.

2. Object and Array Destructuring
// Object destructuring
const user = {
  id: 1,
  name: "Alice",
  contact: {
    email: "alice@example.com",
    phone: "123-4567"
  }
};

const { name, contact: { email } } = user;
console.log(name);  // Alice
console.log(email); // alice@example.com

// Array destructuring
const fruits = ["apple", "banana", "cherry"];
const [firstFruit, , thirdFruit] = fruits;
console.log(firstFruit);  // apple
console.log(thirdFruit);  // cherry

3. Working with Modules
a. Exporting from a module (file: mathUtils.js)
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

b. Importing in another file
import { add, subtract } from './mathUtils.js';
console.log(add(5, 3));      // 8
console.log(subtract(5, 3)); // 2

> ⚠️ Note: You need to run this in a module-supporting environment (e.g., browser with type="module" or Node with .mjs or appropriate config).

4. Function Generators and Symbols
a. Generator Function
function* numberGenerator() {
  yield 1;
  yield 2;
  yield 3;
}
const gen = numberGenerator();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3

b. Symbols

const ID = Symbol("id");
const person = {
  name: "Bob",
  [ID]: 1234
};
console.log(person);           // { name: 'Bob', [Symbol(id)]: 1234 }
console.log(person[ID]);       // 1234

5. Working with Closures
function outerFunction(outerVariable) {
  return function innerFunction(innerVariable) {
    console.log(`Outer: ${outerVariable}, Inner: ${innerVariable}`);
  };
}

const closureExample = outerFunction("outside");
closureExample("inside"); // Outer: outside, Inner: inside
content_copyCOPY