我有一个构造函数,它注册一个事件处理程序:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', function () {
alert(this.data);
});
}
// Mock transport object
var transport = {
on: function(event, callback) {
setTimeout(callback, 1000);
}
};
// called as
var obj = new MyConstructor('foo', transport);Run Code Online (Sandbox Code Playgroud)
但是,我无法data在回调中访问已创建对象的属性.它看起来this并不是指创建的对象,而是指另一个对象.
我还尝试使用对象方法而不是匿名函数:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', this.alert);
}
MyConstructor.prototype.alert = function() {
alert(this.name);
};
Run Code Online (Sandbox Code Playgroud)
但它表现出同样的问题.
如何访问正确的对象?
我注意到,似乎没有明确解释this关键字是什么以及如何在Stack Overflow站点上的JavaScript中正确(和错误地)使用它.
我亲眼目睹了一些非常奇怪的行为,并且无法理解为什么会发生这种行为.
this工作如何以及何时使用?
我在Webpack生成的libs中找到了这个符号,但我不明白它:
var a = (0, _parseKey2.default)(something)
Run Code Online (Sandbox Code Playgroud)
它(0, _parseKey2.default)代表什么?我不记得在功能参数的其他地方括号之间看到那些昏迷分隔的表达式,所以也许我只是缺少一些简单的东西.
谢谢你的帮助.
我刚刚开始使用 React Native,在尝试从 Promise 回调中导航时遇到了以下问题。
这是我尝试运行的以下代码。如果 http 请求返回用户的登录信息正确,我想导航到另一个屏幕。
login() {
axios({
method: 'post',
url: `${Globals.WebAPI}/api/authentication/login`,
data: {
username: this.state.username,
password: this.state.password
}
})
.then(function(response) {
console.log(response.data.token)
AsyncStorage.setItem("AuthToken", response.data.token);
this.props.navigation.navigate('PictureDetails', {base64: photo.base64});
})
.catch(function(error) {
console.log(error);
});
}
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Button
title="Go to Details"
onPress={this.goToDetails}
/>
<Button
title="Signup"
onPress={this.goToSignup}
/>
<Text>Username</Text>
<TextInput
style={{height: 40, width: 200, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => this.setState({username: text})}
value={this.state.username}
/>
<Text>Password</Text>
<TextInput …Run Code Online (Sandbox Code Playgroud) 注意:我不想重新绑定this关键字。我想this引用调用对象。但是,我还希望能够引用定义我的方法的类的实例。如何访问实例?
在 JavaScript 中,this关键字指的是调用对象。所以,当我定义一个类时:
class A {
x = 5;
printx() {
console.log(this.x);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我printx直接从 的实例调用该方法时A,我得到 5:
a = new A();
a.printx();
Run Code Online (Sandbox Code Playgroud)
但是当我printx从不同的上下文中调用时,this.x不是a.x,它可能是window.x或其他东西:
b = a.printx;
b(); // TypeError: this is undefined
Run Code Online (Sandbox Code Playgroud)
我想以printx这样的方式定义 Calling bwill console.log(5)。self即,我想从 Python获取行为。我如何self在 JavaScript 中引用?