JavaScript - объектно-ориентированный язык, в котором главную роль играют объекты.
Строка - простой тип данных, но при вызове метода на ней (например,
toLowerCase()), она оборачивается в объект, а затем опять возвращается в примитив:
Код
let str = 'some';
let strObj = new String(str);
console.log(typeof(str)); // string
console.log(typeof(strObj)); // object
Пусть есть какой-то объект, как общий прототип, описывающий всех солдат
Код
const soldier = {
health: 400,
armor: 100,
};
Создадим конкретного рядового:
Код
const john = {
health: 100
};
Нужно установить связь, чтобы
john имел теже свойства и методы, что и
soldier, но при этом сохранял свои.
Делается это несколькими способами.
Устаревший формат:
Код
john.__proto__ = soldier;
console.log(john); // { health: 100 }
console.log(john.armor); // 100
То есть
john получил свойство
armor от своего прототипа, объекта
soldier С методами точно также, добавим функцию в объект
soldier и вызовем её для объекта
john Код
const soldier = {
health: 400,
armor: 100,
sayHello: function() {
console.log('Hello');
}
};
const john = {
health: 100
};
john.__proto__ = soldier;
john.sayHello(); // Hello
Современный способ:
Код
Object.setPrototypeOf(john, soldier);
Так делается, если какой-то объект типа
john уже существует, но обычно всё делается на этапе создания объекта.
Например, создаём новый объект
john, который будет прототипно наследоваться от
soldier Код
const john = Object.create(soldier);
Всего комментариев: 0