es6类将此传递给静态类函数

时间:2017-08-20 06:56:32

标签: javascript class ecmascript-6 static-methods

我有这个课程

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

class Object{
    constructor(object) {

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

    }

    utils = ObjectUtilities;
}

这个类还带有statis方法(类包含许多静态方法)

class ObjectUtilities {

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

我想知道是否可以分享"这个"来自Object类 静态方法" getKey(对象)"

想要这样做:

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

(ObjectUtilities尽可能多的静态函数我不想为每个函数执行此操作)

感谢帮助我...

1 个答案:

答案 0 :(得分:2)

您可以将constructor添加到ObjectUtilities类,将给定上下文绑定到getKey函数:



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());