Object Composition

Run Settings
LanguageJavaScript
Language Version
Run Command
class Developer { constructor(name) { this.name = name; } commitChange() { console.log(`${this.name} is committing changes`); } } function canBuildUI(developer) { return { buildUI: () => { console.log(`${developer.name} is building UI...`); } } } function canBuildAPI(developer) { return { buildAPI : () => { console.log(`${developer.name} is building API...`); } } } function canDeployApp(developer) { return { deployApp : () => { console.log(`${developer.name} is deploying app...`); } } } function createFrontEndDeveloper(name) { const developer = new Developer(name); //Membuat variabel developer mengembalikan nilai objek dengan argumen name yang nilainya diambil dari argumen createFrontEndDeveloper return Object.assign(developer, canBuildUI(developer)); //mengkomposisikan kemampuan" akan dikirim ke canBuildUI(developer) } function createBackEndDeveloper(name) { const developer = new Developer(name); return Object.assign(developer, canBuildAPI(developer)); } function createDevOps(name) { const developer = new Developer(name); return Object.assign(developer, canDeployApp(developer)); } function createFullStackDeveloper(name) { const developer = new Developer(name); return Object.assign(developer, canBuildUI(developer), canBuildAPI(developer), canDeployApp(developer)); } //Untuk pemanggilan harus variabel.function yang akan dipanggil(); const frontEndDeveloper = createFrontEndDeveloper('Fulan'); frontEndDeveloper.commitChange(); frontEndDeveloper.buildUI(); console.log(`is ${frontEndDeveloper.name} developer ?`, frontEndDeveloper instanceof Developer); const backEndDeveloper = createBackEndDeveloper('Fulana'); backEndDeveloper.commitChange(); backEndDeveloper.buildAPI(); console.log(`is ${backEndDeveloper.name} developer ?`, backEndDeveloper instanceof Developer); const devOps = createDevOps('Fulani'); devOps.commitChange(); devOps.deployApp(); console.log(`is ${devOps.name} developer ?`, devOps instanceof Developer); const fullStackDeveloper = createFullStackDeveloper('Fulanah'); fullStackDeveloper.commitChange(); fullStackDeveloper.buildUI(); fullStackDeveloper.buildAPI(); fullStackDeveloper.deployApp(); console.log(`is ${fullStackDeveloper.name} developer ?`, fullStackDeveloper instanceof Developer);
Editor Settings
Theme
Key bindings
Full width
Lines