Javascript - 无法修改/更改函数内的var对象值吗?
build.gradle
storeFile file("*.jks")
storePassword "***"
keyAlias "***"
keyPassword "***"
这样的东西,它不起作用。
但是代码是正确的,因为像这样的东西
var shared = {
lock: true,
connection: '',
messages: []
};
Socket.onopen = function(e)
{
shared.connection = 'Zostałeś połączony pomyślnie!';
shared.lock = false;
};
确实有效。
所以就像我无法修改此函数中的shared.connection ...
但奇怪的是什么
Socket.onerror = function(e) { shared.messages.push(generateMessage('System','Wystąpiłbłąd!Połączeniezostałoprzerwane。','others')); shared.lock = true; };
这个有效,将消息正确地推送到shared.connection = 'Zostałeś połączony pomyślnie!';
Socket.onopen = function(e)
{
shared.lock = false;
};
中的messages
数组。
怎么了?发生了什么事?
如何让它发挥作用?
完整代码:
shared
这个问题不同,因为我们在这里面对VueJS,它具有反应性,未来可以改变var值。
<script>
var shared = {
lock: true,
connection: '',
messages: []
};
function generateMessage(nick = '', content = '', color = '')
{
return {
time: timeNow(),
nick: nick,
content: content,
color: color
};
}
function timeNow()
{
var date = new Date();
return date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
}
export default {
data() {
return {
lock: shared.lock,
connection: shared.connection,
login: true,
message: {
time: '',
nick: '',
content: '',
color: 'others'
},
messages: shared.messages
}
},
methods:
{
submit: function()
{
var date = new Date();
this.message.time = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
Socket.send(JSON.stringify(this.message));
this.message.color = '';
this.messages.push(JSON.parse(JSON.stringify(this.message)));
this.login = false;
this.message.color = 'others';
this.message.content = '';
}
}
}
var Socket = new WebSocket('ws://localhost:9000/chat');
Socket.onopen = function(e)
{
shared.connection = 'Zostałeś połączony pomyślnie!';
console.log(shared.connection);
shared.lock = false;
};
Socket.onmessage = function(e)
{
shared.messages.push(JSON.parse(e.data));
};
Socket.onerror = function(e)
{
shared.messages.push(generateMessage('System', 'Wystąpił błąd! Połączenie zostało przerwane.', 'others'));
shared.lock = true;
};
Socket.onclose = function(e)
{
shared.messages.push(generateMessage('System', 'Połączenie zostało zamknięte.', 'others'));
shared.lock = true;
};
</script>
Socket.onopen = function(e)
{
shared.connection = 'Zostałeś połączony pomyślnie!';
shared.messages.push(generateMessage('System', 'Wystąpił błąd! Połączenie zostało przerwane.', 'others'));
这个很好用,Vue中的消息更新,我可以看到它,
但shared.messages.push(generateMessage('System', 'Wystąpił błąd! Połączenie zostało przerwane.', 'others'));
不起作用,vue没有任何更新......发生了什么? :/
它更新了值,但是Vue没有得到它。
我认为这与vue有关..