是否可以重新绑定一个函数,使它绑定到最初的同一个对象,但是接受一个不同的参数值?
例如......
By xpath=By.xpath("//a[contains(@title,'Manage Users')]");
WebElement manageUsers = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(xpath));
manageUsers.click();
答案 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
,使用 绑定到它。