JS Courses 9 OOP

Object.create(); call()/apply(); bind();

by AndrewKuk

HTML

<button>button</button>

JavaScript

/*
//за допомогою обєктів
const Car = {
	weight: 1000,
  color: "black",
  carType: "allroad",
  brand: "Nissan",
  price: 17000,
  move: function(speed) {
console.log(this.brand);
console.log("drive " + speed);
}
};
const Bus = {
	weight: 3000,
  color: "white",
  carType: "",
  brand: "Bogdan",
  price: 1000,
  capacity: 50
};
Car.move.call(Bus, 50);
*/

/*
// створення класу через функцію
function User(name) {
	this.userName = name;
}
const user1 = new User('Tolyan');
const user2 = new User('Benya');

console.log(user1.userName);
console.log(user2.userName);

function great(message, time) {
	console.log(`${message} ${time}, ${this.userName}`); 
}
great.apply(user1, ['Good', 'day']); //Good day, Tolyan
*/

/*
const Films = {
	videos: ['Die Hard', 'July 4', 'Godzilla'],
  watch: function() {
  	console.log('I\'m watching ' + this.videos[2]);
  }
}

const btn = document.querySelector('button');

btn.addEventListener('click', Films.watch.bind(Films));
*/

function Worker(position) { // make constractor Worker
	const salary = 5000;
  this.myPosition = position;  
  this.saySalary = function(requester) {
  		if(requester == 'wife') {
      		return salary / 5;
      }
  };
}
function Manager(position) { //constractor Manager
		Worker.apply(this, arguments); //все що доступно у Worker стає досупним тут
    
    this.manage = function() {
    		return `I\'m a manager! ${this.myPosition}`;
    };
}

const worker1 = new Worker();
console.log(worker1.saySalary('wife'));

const man1 = new Manager('CEO');
console.log(man1.manage());