使用最初绑定对象的新参数重新绑定函数

时间:2017-10-11 15:14:31

标签: javascript

是否可以重新绑定一个函数,使它绑定到最初的同一个对象,但是接受一个不同的参数值?

例如......

  By xpath=By.xpath("//a[contains(@title,'Manage Users')]");
   WebElement manageUsers = (new WebDriverWait(driver, 10))
           .until(ExpectedConditions.presenceOfElementLocated(xpath));
   manageUsers.click();

1 个答案:

答案 0 :(得分:1)

如果您只想添加参数,则可以使用bind执行此操作。您为第一个bind参数提供的内容并不重要,因为当您在绑定函数上调用bind时它将被忽略(因此null是第一个参数的合理选择)。

因为忽略了第一个参数,原始代码将保持不变,但会产生误导性(boundFunc没有owner属性,因此boundFunc.owner会产生undefined) 。但最好使用null或其他内容来避免误读人们以后阅读代码。

只有更改是格式化,缺少;,还有***行:

// Object definition
function OriginalOwner(prop) {
  this.prop = prop;
}
OriginalOwner.prototype.aFunc = function(arg) {
  return this.prop + arg;
};

// Object instance
var owner = new OriginalOwner("Returned ");

// Example function bindings
var boundFunc = owner.aFunc.bind(owner);
var reboundFunc = boundFunc.bind(null, "myArgument"); // ***

// Calling rebound function
console.log(reboundFunc()); // outputs "Returned myArgument"

有效的原因bind返回一个新函数,它将使用我们提供的this调用 - 但是我们完全调用它的绑定函数忽略您调用它的this,使用 绑定到它。