Que.1 Create 2 objects - parent and child. Attach methods to parent and use those methods in child object using parents prototype
// Parent object constructor
function Parent() {
this.name = 'Parent';
}
// Method attached to Parent object
Parent.prototype.sayHello = function() {
console.log(`Hello, I am ${this.name}`);
};
// Child object constructor
function Child() {
this.name = 'Child';
}
// Inheriting from Parent's prototype
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
// Creating a new instance of Child
const childObj = new Child();
// Using Parent's method in Child object
childObj.sayHello(); // Output: "Hello, I am Child"
Output: Hello, I am Child
Que.2 Write code to explain prototype chaining
// Parent object constructor
function Parent(name) {
this.name = name;
}
// Method attached to Parent object
Parent.prototype.sayHello = function() {
console.log(`Hello, I am ${this.name}`);
};
// Child object constructor
function Child(name, age) {
Parent.call(this, name); // Call Parent's constructor with Child's instance
this.age = age;
}
// Inheriting from Parent's prototype
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
// Method attached to Child object
Child.prototype.sayAge = function() {
console.log(`I am ${this.age} years old`);
};
// Creating instances of Child
const child1 = new Child('Child 1', 5);
const child2 = new Child('Child 2', 8);
// Using inherited methods
child1.sayHello(); // Output: "Hello, I am Child 1"
child1.sayAge(); // Output: "I am 5 years old"
child2.sayHello(); // Output: "Hello, I am Child 2"
child2.sayAge(); // Output: "I am 8 years old"
Output:
Hello, I am Child 1
I am 5 years old
Hello, I am Child 2
I am 8 years old
Que.3 Add a method to calculate sum of all elements in Array in array's protype, use that method to calculate sum for multiple arrays
// Define the method to calculate sum in the prototype of arrays
Array.prototype.sum = function() {
let sum = 0;
for (let i = 0; i < this.length; i++) {
if (typeof this[i] === 'number') {
sum += this[i];
}
}
return sum;
};
// Create some example arrays
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [10, 20, 30, 40, 50];
const arr3 = [2.5, 3.7, 8.9, 1.2];
// Use the sum method to calculate sum for each array
const sum1 = arr1.sum();
const sum2 = arr2.sum();
const sum3 = arr3.sum();
// Output the results
console.log('Sum of arr1:', sum1); // Output: Sum of arr1: 15
console.log('Sum of arr2:', sum2); // Output: Sum of arr2: 150
console.log('Sum of arr3:', sum3); // Output: Sum of arr3: 16.3
Output: Sum of arr1: 15
Sum of arr2: 150
Sum of arr3: 16.3
Que.4 Write a JavaScript function to retrieve all the names of object's own and inherited properties.
function getAllPropertyNames(obj) {
let propertyNames = [];
const getAllProperties = (obj) => {
const proto = Object.getPrototypeOf(obj);
if (proto !== null) {
getAllProperties(proto);
}
const names = Object.getOwnPropertyNames(obj);
for (const name of names) {
if (!propertyNames.includes(name)) {
propertyNames.push(name);
}
}
}
getAllProperties(obj);
return propertyNames;
}
// Example usage:
// Define parent object
const parent = {
parentProp1: 'Parent Prop 1',
parentProp2: 'Parent Prop 2'
};
// Define child object with inheritance
const child = Object.create(parent);
child.childProp1 = 'Child Prop 1';
child.childProp2 = 'Child Prop 2';
// Retrieve all property names of child object
const allPropertyNames = getAllPropertyNames(child);
console.log(allPropertyNames);
// Output: ["childProp1", "childProp2", "parentProp1", "parentProp2"]