Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Prototypal Inheritance | Prototypes, Inheritance, and the this Keyword
Objects and Prototypes in JavaScript

bookPrototypal Inheritance

Prototypal inheritance is a powerful feature in JavaScript that allows you to create new objects that inherit properties and methods from existing objects.

You can directly link objects together, share behavior, and update prototypes dynamically. This flexibility encourages code reuse and makes it easier to create variations of objects without duplicating code.

12345678910111213
const animal = { eats: true, walk() { console.log("Animal walks"); } }; const rabbit = Object.create(animal); rabbit.hops = true; console.log(rabbit.eats); // true (inherited from animal) rabbit.walk(); // "Animal walks" (inherited method) console.log(rabbit.hops); // true (own property)
copy

In this example, the animal object serves as a prototype. You create a new object rabbit using Object.create(animal), which sets animal as the prototype of rabbit. When you access rabbit.eats, JavaScript does not find the property directly on rabbit, so it looks up the prototype chain and finds it on animal. The same happens with the walk method. However, the hops property is unique to rabbit and not inherited.

123456789101112131415161718192021
const animal = { eats: true, walk() { console.log("Animal walks"); } }; const rabbit = Object.create(animal); animal.sleep = function() { console.log("Animal sleeps"); }; rabbit.sleep(); // "Animal sleeps" (inherited from animal) rabbit.walk = function() { console.log("Rabbit hops instead of walking"); }; rabbit.walk(); // "Rabbit hops instead of walking" (overrides prototype method) animal.walk(); // "Animal walks" (original method remains unchanged)
copy

A best practice when using prototypal inheritance is to define shared behavior on the prototype object, so all derived objects can access it without duplication. You can add new methods to the prototype even after objects have been created, and all inheriting objects will gain access to them. If you need to customize behavior for a specific object, you can override inherited methods by defining them directly on that object, leaving the prototype untouched.

question mark

Why does console.log(rabbit.eats) output true in this code?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 7.69

bookPrototypal Inheritance

Свайпніть щоб показати меню

Prototypal inheritance is a powerful feature in JavaScript that allows you to create new objects that inherit properties and methods from existing objects.

You can directly link objects together, share behavior, and update prototypes dynamically. This flexibility encourages code reuse and makes it easier to create variations of objects without duplicating code.

12345678910111213
const animal = { eats: true, walk() { console.log("Animal walks"); } }; const rabbit = Object.create(animal); rabbit.hops = true; console.log(rabbit.eats); // true (inherited from animal) rabbit.walk(); // "Animal walks" (inherited method) console.log(rabbit.hops); // true (own property)
copy

In this example, the animal object serves as a prototype. You create a new object rabbit using Object.create(animal), which sets animal as the prototype of rabbit. When you access rabbit.eats, JavaScript does not find the property directly on rabbit, so it looks up the prototype chain and finds it on animal. The same happens with the walk method. However, the hops property is unique to rabbit and not inherited.

123456789101112131415161718192021
const animal = { eats: true, walk() { console.log("Animal walks"); } }; const rabbit = Object.create(animal); animal.sleep = function() { console.log("Animal sleeps"); }; rabbit.sleep(); // "Animal sleeps" (inherited from animal) rabbit.walk = function() { console.log("Rabbit hops instead of walking"); }; rabbit.walk(); // "Rabbit hops instead of walking" (overrides prototype method) animal.walk(); // "Animal walks" (original method remains unchanged)
copy

A best practice when using prototypal inheritance is to define shared behavior on the prototype object, so all derived objects can access it without duplication. You can add new methods to the prototype even after objects have been created, and all inheriting objects will gain access to them. If you need to customize behavior for a specific object, you can override inherited methods by defining them directly on that object, leaving the prototype untouched.

question mark

Why does console.log(rabbit.eats) output true in this code?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2
some-alt