<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
</body>
</html>
/*Класс Электрическая Сеть*/
function ElectricNetwork() {
this.listElements = [];
}
ElectricNetwork.timeOfDay = {};
ElectricNetwork.timeOfDay.AFTERNOON = 'afternoon';
ElectricNetwork.timeOfDay.NIGHT = 'night';
ElectricNetwork.prototype.makeBalance = function(timeOfDay) {
this.balance = 0;
for (var i = 0; i < this.listElements.length; i++) {
this.balance += this.listElements[i].showPower(timeOfDay);
}
return this.balance;
};
ElectricNetwork.prototype.calcGenIntake = function() {
};
ElectricNetwork.prototype.calcPrice = function() {
};
ElectricNetwork.prototype.addNewElement = function(element) {
if (!(element instanceof ElementsNetwork)) {
throw new Error("Нельзя добавить объект, ненаследующийся от ЭлементаСети!");
}
this.listElements.push(element);
};
ElectricNetwork.prototype.removeElement = function(element) {
};
/*Класс Элемент Электрической Сети*/
function ElementsNetwork() {
}
ElementsNetwork.prototype.showPower = function(timeOfDay) {
return this.power[timeOfDay];
};
/*Класс Электростанция*/
function Powerhouse(generatedPower) {
this.power = {};
this.power[ElectricNetwork.timeOfDay.AFTERNOON] = generatedPower / 2;
this.power[ElectricNetwork.timeOfDay.NIGHT] = generatedPower / 2 ;
}
var constructor = this.constructor;
Powerhouse.prototype = Object.create(ElementsNetwork.prototype);
Powerhouse.prototype.constructor = constructor;
/*Класс Солнечная Панель*/
function SolarPanel(generatedPower) {
this.power = {};
this.power[ElectricNetwork.timeOfDay.AFTERNOON] = generatedPower;
this.power[ElectricNetwork.timeOfDay.NIGHT] = 0;
}
constructor = this.constructor;
SolarPanel.prototype = Object.create(ElementsNetwork.prototype);
SolarPanel.prototype.constructor = constructor;
/*Класс Дом*/
function House(costsAfternoon, costsNight, persons) {
this.costsAfternoon = costsAfternoon;
this.costsNight = costsNight;
this.persons = persons;
this.power = {};
this.calcCostsAfternoon();
this.calcCostsNight();
}
constructor = this.constructor;
House.prototype = Object.create(ElementsNetwork.prototype);
House.prototype.constructor = constructor;
House.prototype.calcCostsAfternoon = function() {
this.power[ElectricNetwork.timeOfDay.AFTERNOON] = - this.costsAfternoon * this.persons;
};
House.prototype.calcCostsNight = function() {
this.power[ElectricNetwork.timeOfDay.NIGHT] = - this.costsNight * this.persons;
};
/*Класс Линия Электропередач*/
function PowerLine(bandwidth, price) {
this.bandwidth = bandwidth;
this.price = price;
}
var constructor = this.constructor;
PowerLine.prototype = Object.create(ElementsNetwork.prototype);
PowerLine.prototype.constructor = constructor;
/*Применение*/
var electricNetwork1 = new ElectricNetwork();
var powerhouse1 = new Powerhouse(100);
var solarPanel1 = new SolarPanel(4);
var house1 = new House(0.004, 0.001, 200);
var powerLine1 = new PowerLine(20, 100);
electricNetwork1.addNewElement(powerhouse1);
electricNetwork1.addNewElement(solarPanel1);
electricNetwork1.addNewElement(house1);
/*electricNetwork1.addNewElement(powerLine1);*/
console.log(electricNetwork1.makeBalance(ElectricNetwork.timeOfDay.AFTERNOON));
console.log(electricNetwork1.makeBalance(ElectricNetwork.timeOfDay.NIGHT));
/*console.log(electricNetwork1.calcGenIntake());
console.log(electricNetwork.calcPrice());*/
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |