我使用的变量在某一点之后变得不确定。有人可以帮助我了解正在发生的事情。
以下代码是量角器代码。
this.searchBy = element(by.model('searchCompanyComponent.searchByValue'));
this.clickTheProvidedValueInSearchByDropdown = function (selectedItem) {
var x = this.searchBy;
this.searchBy.all(by.tagName('option')).filter(function (elem, index) {
return elem.getText().then(function (text) {
return text.toUpperCase().replace(/ |-/g, '') === selectedItem.toUpperCase().replace(/ |-/g, '');
});
}).getText().then(function (text) {
console.info(x); // 1
console.log(this.searchBy); // 2
});
};
console.log(this.searchBy); //3
1和3处的控制台日志显示了定位器对象,但2处的控制台日志显示为未定义。
这种意外行为的背后原因是什么?
最佳答案
在JavaScript中,this
可能有很多不同的含义,具体取决于您引用它的上下文。
当您说console.log(this.searchBy); // 2
时,您位于传递给getText
的匿名函数的上下文中,该函数没有searchBy
属性。您将需要将此函数bind
应用于页面对象的上下文,或者使用对searchBy
中x
的存储引用
回顾this mdn article可能会有所帮助
关于javascript - 无法访问变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38998862/