This is a tiny task for those who are not familiar with Object-Oriented Programing concepts yet. And with JavaScript OOP in particular.
This place can be useful to you if you
There is a tiny world inhabited by a dog, a cat, a woman, a man, and sometimes by a cat-woman.
You will be creating a JavaScript model of this world.
Fork this repo
Clone your fork locally
index.js
is what you will work with. Put your code
into it.
It is also a good practice to work in a dedicated
branch, not master
. So start with checkout -B populate-world
before committing any changes.
print(message)
function.
Each list entry should look like
human; John; male; 2; 2; Hello world!
0
or undefined
, it is totally up to youhuman; John; male; 2; 2; Hello world!; Rex, Tom, Jenny
Read following Keep things simple and Testing your app sections before you start coding.
NB! At this stage you don't need anything beyond what you already know. Do not study any OOP. Anything like example below would work.
const dog = {
species: 'dog',
name: 'Toby',
gender: 'male',
legs: 4,
hands: 0,
saying: 'woof-woof!'
};
// ... other objects ...
print(dog.species + ';' + dog.name + ';' + dog.gender + ';' +
dog.legs + ';' + dog.hands + ';' + dog.saying);
// ... other print-outs ...
If you know how to improve the code sample above e.g. employing
#Array.join
or a function that takes an object as an argument
and returns a string to feed to print()
then go ahead.
You will have the opportunity to improve your skills later on and your current solution at your current level of knowledge will become a milestone to measure your improvement against. That is the aim of incremental studying process: Do - Learn - Improve
To see how things work open index.html
in Live Server mode in your IDE.
How to open file in the LiveServer mode:
Press Ctrl-Shift-J
in Google Chrome or Mozilla Firefox to see
developer's console for possible errors.
You may want to prettify the output, but try focusing more on code itself.
Doing var object1 = object2
and object2.name='Anny'
results in changing name of object1
to Anny
as well?
Read about Copying Objects in JavaScript
Once you are happy with your app, or at least it doesn't report any errors in dev console you may consider it to be of release quality and worth merging into master:
git checkout master && git merge populate-world
However, proceed with any further changes when on populate-world
or
another feature branch, merging into master
from time to time.
Push your repo to github.
You may want to publish your world on GitHub Pages. Following the official GitHub guidelines on a simple web-project publishing.
Now your world is published at
https://<YourGithubUsername>.github.io/a-tiny-JS-world/
Publication will be automatically updated when you push your new commits
(although it may take 5 to 10 minutes since git push
).
You're done? Congratulations!
Did you like the experience? Grant this repo a :star:!
Navigate to A Tiny JS World root repo worlds list
Edit the file
Click Edit this file button
Copy the very first line in the table, go all way down to the end of the table, insert the copy as the last row in the table, and edit it as appropriate specifying:
Add an extra new line so additions from other contributors do not affect yours.
Switch to Preview tab to check if the table still looks nice.
Submit changes
You are done here!
Please, note that PRs may not be merged very soon. Thank you for your patience.
If you have completed this task as a part of Kottans Front-End Course ask a course mentor or classmates to support you. Check this task intro within the course for instructions.
Otherwise, ask someone to review your code and come up with explanations on how it could be completed with OOP in mind. It is always good to explain yet another approach on some working code.
Keep in mind that this was just a tiny world and whenever you need to build bigger worlds Object-Oriented Programming concepts come to your rescue.
Imagine you have to build a big world populated with billions of inhabitants and a great variety of species, and your world project code base will be distributed across many files.
Now, here are the problems.
In other words how do you make your code scalable?
Object-Oriented Programing (OOP) concepts come to your rescue.
The following will help you to make yourself familiar with OOP and JavaScript OOP.
super()
in JavascriptConsider completing Object-Oriented Javascript from Kottans Front-End Course if not yet.
Some extras related to OOP:
If you feel now that you can improve your code being armed with OOP knowledge then go ahead!
In addition to the requirements above implement the following:
When done update your row in the worlds.md submitting a relevant PR.
Grats! You've done a great job! You have improved your OOP skills and hopefully feel happier and self-confident.
Your repo fork reflects your progress, so feel free exposing it to whoever might be interested in your learning path proofs.
This repo is dedicated to my elder son Yaroslav who turned 18 on this repo creation date.
This Tiny JS World project wouldn't ever happen without Kottans and awesome Kottans Front-End Course (it's free and initial part is completely remote) I have completed as a student in 2017 and since then have a chance to contribute thus paying back.
Special thanks to Anastasiya Mashoshyna, Yevhen Orlov and other Kottans for the discussion, feedback, and support that resulted in this project creation.