Goor Lavi
Goor Lavi

Reputation: 412

es6 class pass this to a static class functions

i have this class

import { ObjectUtilities } from '~/utils/';

class Object{
    constructor(object) {

        Object.assign(this, { ...object });

    }

    utils = ObjectUtilities;
}

and this class with the statis method also (class contains many static methods)

class ObjectUtilities {

  static getKey(object){
    return object.key;
  }
}

and i want to know if its possible to share the "this" from the Object class to the static method "getKey(object)"

want to do it as:

let x = new Object(object);
x.utils.getkey(this);

(ObjectUtilities as many static funcs i dont want to do it for each of them)

thanks for helping me out...

Upvotes: 2

Views: 1243

Answers (1)

Erazihel
Erazihel

Reputation: 7605

You can add a constructor to the ObjectUtilities class where you bind the given context to the getKey function:

class ObjectUtilities {
  constructor(_this) {
    this.getKey = this.getKey.bind(_this);
  }
 
  getKey() {
    return this.key;
  }
}

class MyObject {
    constructor(object) {
        Object.assign(this, { ...object });
        this.utils = new ObjectUtilities(this);
    }
}

const objectFoo = { key: 'foo' };
const objectBar = { key: 'bar' };

let x = new MyObject(objectFoo);
let y = new MyObject(objectBar);

console.log(x.utils.getKey(), y.utils.getKey());

Upvotes: 2

Related Questions