麻烦从对象到另一个对象的绑定方法

时间:2018-04-11 18:54:41

标签: javascript function methods bind

我正在编写一个工厂函数,它返回一个Repository实例,该实例具有从另一个对象绑定到它的方法。这是一个例子:

class Repository {
  constructor() {

  }
  performQuery() {
    console.log('Performing query');
  }
}

const repositoryFactory = (methodObj) => {
  let repo = new Repository();
  for (let prop of Object.getOwnPropertyNames(methodObj)) {
    repo[prop] = methodObj[prop].bind(repo);
  }
  return repo;
}

let newRepo = repositoryFactory({
  doSomething: function() {
    console.log(this);
  },
  doSomethingElse: function() {
    console.log(this);
  }
});

newRepo.doSomething();
newRepo.performQuery();

newRepo.doSomething应该记录Repository实例。它的工作原理很明显,因为方法performQuery将被附加。在这个例子中,它不是。

如果那里有一些语法错误我很抱歉;我稍微修改了原始代码以使其更加简化,但这正是我试图实现方法绑定的方式。每当我尝试从thisdoSomething内部访问doSomethingElse时,我都会undefined

0 个答案:

没有答案