JSFiddle - React, Tailwind, and code Playground

JavaScript

var Warrior = {};

Warrior.warInit = function (weapon){
   this.setWeapon(weapon);    
}
 
Warrior.getWeapon = function(){
   return this.weapon;
}

Warrior.setWeapon = function (value){
   this.weapon = value || "Bare hands";
}

var Archer = Object.create(Warrior);

Archer.archInit = function (accuracy){ 
   this.setWeapon("Bow");   
   this.setAccuracy(accuracy); 
}

Archer.getAccuracy = function (pocket) {
   return pocket.accuracy;
}
Archer.setAccuracy = function (value, pocket){ 
   pocket.accuracy = value;
}

function attachPocket(){ 
                         
   var pocket = {};

   var archer = Object.create(Archer); 
   
   archer.getAccuracy = function(){
      var args = Array.prototype.slice.call(arguments);
      args = args.concat([pocket]); 

      return Archer.getAccuracy.apply(this, args)
   }; 
   archer.setAccuracy = function(){ 
      var args = Array.prototype.slice.call(arguments);
      args = args.concat([pocket]); 

      return Archer.setAccuracy.apply(this, args);
   }; 

   return archer;
}


var archer1 = attachPocket();  

archer1.archInit("accuracy high"); 
console.log(archer1.getAccuracy()); 
archer1.setAccuracy("accuracy medium");
console.log(archer1.getAccuracy());