Skip to content

Instantly share code, notes, and snippets.

View sag1v's full-sized avatar
🎯
Focusing

Sagiv ben giat sag1v

🎯
Focusing
View GitHub Profile
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
Player {
userName: "sag1v",
score: 700,
__proto__: Player.prototype
}
Player {
userName: "sarah",
score: 900,
__proto__: Player.prototype
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
Player {
userName: "sag1v",
score: 700,
__proto__: Player.prototype {
setScore: ƒ
}
}
PaidPlayer {
userName: "sarah",
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
const playerFunctions = {
setScore(newScore) {
this.score = newScore;
}
}
function createPlayer(userName, score) {
const newPlayer = Object.create(playerFunctions);
newPlayer.userName = userName;
newPlayer.score = score;
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
player1 {
userName: "sag1v",
score: 700,
__proto__: playerFunctions {
setScore: ƒ
}
}
paidPlayer {
userName: "sarah",
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
function double(num) {
return num * 2;
}
double.someProp = 'Hi there!';
double(5); // 10
double.someProp // Hi there!
double.prototype // {}
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
function PaidPlayer(userName, score, balance) {
this.balance = balance;
/* we are calling "Player" without the "new" operator
but we use the "call" method,
which allows us to explicitly pass a ref for "this".
Now the "Player" function will mutate "this"
and will populate it with the relevant properties */
Player.call(this, userName, score);
}
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
{
userName: 'sag1v',
score: 700,
setScore: ƒ
}
{
userName: 'sarah',
score: 900,
setScore: ƒ
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
double.toString()
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
Player.call(this, userName, score)
@sag1v
sag1v / Markdium-JSX.jsx
Created November 25, 2019 14:27
Markdium-JavaScript - The prototype chain in depth
const player1 = Object.create(null)
player1.userName = 'sag1v';
player1['score'] = 700;
player1.setScore = function(newScore) {
player1.score = newScore;
}