Javascript:原型函数中的变量是否跨对象共享?
Javascript:原型函数中的变量是否跨对象共享?,javascript,Javascript,\u ioSocket.on部分只表示任何异步回调。如果我这样做: var Socket = (function() { var Socket = function(ioSocket) { this._ioSocket = ioSocket; }; Socket.prototype = { release: function() { var some = 0; this._ioSock
\u ioSocket.on
部分只表示任何异步回调。如果我这样做:
var Socket = (function() {
var Socket = function(ioSocket) {
this._ioSocket = ioSocket;
};
Socket.prototype = {
release: function() {
var some = 0;
this._ioSocket.on('ack', function() {
some = some + 1;
console.log(some);
});
}
return Socket;
}());
如果
on('ack')
回调可以随机触发,那么多次是否保证控制台始终打印1?或者,由于所有套接字都指向相同的某个变量,是否可能会打印其他内容?只要每次调用release只导致调用一次。在回调上,.release()
将始终打印1,由于每次对release
的新调用都会创建变量some
的新副本,如果您先尝试一下会怎么样?虽然这不是一个坏主意,但我认为我可能会遇到误报。如果没有调用release函数,一些将是0
,或者如果调用了1
(并将被记录)。这是因为每次调用release
函数时some
都设置为0。一次是什么意思?总共一次?每次release()调用一次?@user2820379是,每次release()一次
call.some
只是函数中的局部变量,每次调用release
时都会创建some
的新副本。
new Socket(ioSocket).release()