JSFiddle - React, Tailwind, and code Playground

by Anastasia Sharko

HTML

<body>
  <div>
    <p>Структурирование пространства</p>
    <p>инкапсуляция (скрытие внутри лишней информации, для простоты,уменьшения связей)</p>
    <p>полиморфизм (если есть похожие объекты,то их можно одинакого их обработать) - признакам объекта, свойства и методы одинаковые</p>
    <p>наследование (выстраиваем в иерархию):</p>
    <p>class-(спек, как надо сделать - вдругих языках) создаем прототип</p>
    <p>function Dom(){ this.s=0 //this - новый объект,который будем делать }
    </p>

    <p>prototype - складывают методы, статические свойства</p>
    <p>Dom.prototype={method:function(){this. ....}}</p>
</body>

JavaScript

// INGRIDIENTS с большой буквой, т.к. константа
var INGRIDIENTS = {
	'cheese':{
  	weight: 50,
    calories:50
  },
  'souce':{
  	weigt: 10,
    calories: 20
  },
  'mozzarela': {
  	weight: 25,
    calories: 25
  }
}
function PizzaContructor(recipe) {
  // правила создания объекта - его инициализация
  // this который доступен в этой функции - это новый объект, который будет создан если функцию вызвать с new
  this.base = options.base
  this.ingridients = recipe.ingridients
  this.weight = options.base.weight // weight - это свойство объекта
  this.calories = options.base.calories
}
var pizza = new PizzaContructor({
  base: {
    weight: 100
  }
})
console.log(pizza.weight) // 100
PizzaContructor.prototype = { // or Object.create
  getWeight: function() { // 'эта функция называется метод объекта
    // this такой же как в функции-конструкторе
    // мы можем из него брать любые свойства
    console.log(this, this.weight)
    return this.weight
  },
  getCalories: function() {
    return this.calories
  }
}
var pizza = new PizzaContructor({
  base: {
    calories: 50,
    weight: 100
  }
})
//create function
var recipeMargarita = {
 base: {
 	weight: 100,
  calories: 30
 },
 ingridients: [
 	INGRIDIENTS.cheese,
  INGRIDIENTS.souce,
  INGRIDIENTS.mozzarela
 ]
}

console.log(pizza.getCalories())
setTimeout(pizza.getWeight, 50)