Last active
June 25, 2024 07:48
-
-
Save pabletecodes/110b92c3d19f0074dd416286cae1a036 to your computer and use it in GitHub Desktop.
Encapsulating collections in JavaScript π
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Team { | |
constructor(members) { | |
this._members = members; | |
} | |
get members() { | |
return this._members; | |
} | |
set members(members) { | |
this._members = members; | |
} | |
} | |
const team = new Team([ mike, john] ); | |
// Add a member | |
team.members.push(peter); | |
// Remove a member | |
const index = team.members.indexOf(peter); | |
team.members.splice(index, 1); | |
// Replace the members | |
team.members = [ mike, john, peter ]; | |
// Get the number of members | |
console.log(team.members.length); | |
// Iterate through the members | |
for (let member of team.members) { | |
console.log(member.fullname); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Team { | |
constructor(members) { | |
// We store a "copy" of the collection | |
this._members = members.slice(); | |
} | |
addMember(member) { | |
return this._members.push(peter); | |
} | |
removeMember(member) { | |
const index = this._members.indexOf(member); | |
return this._members.splice(index, 1); | |
} | |
set members(members) { | |
this._members = members.slice(); | |
} | |
get length() { | |
return this._members.length; | |
} | |
[Symbol.iterator]() { | |
return this._people[Symbol.iterator](); | |
} | |
} | |
// Add a member | |
team.addMember(peter); | |
// Remove a member | |
team.removeMember(peter); | |
// Replace the members | |
team.members = [ mike, john, peter ]; | |
// Get the number of members | |
console.log(team.length); | |
// Iterate through the members | |
for (let member of team) { | |
console.log(member.fullname); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment