有没有可能在javascript中以某种方式将别名/引用分配给本地变量?
我指的是类似C语言的东西:
function foo() {
var x = 1;
var y = &x;
y++;
alert(x); // prints 2
}
=编辑=
是否可以在此代码中使用别名arguments.callee?:
function foo() {
arguments.callee.myStaticVar = arguments.callee.myStaticVar || 0;
arguments.callee.myStaticVar++;
return arguments.callee.myStaticVar;
}
发布于 2009-11-06 19:29:45
在JavaScript中,像整数和字符串这样的基本类型是通过值传递的,而对象是通过引用传递的。因此,为了实现这一点,你需要使用一个对象:
// declare an object with property x
var obj = { x: 1 };
var aliasToObj = obj;
aliasToObj.x ++;
alert( obj.x ); // displays 2
发布于 2009-11-06 20:09:01
在某种程度上,这是可能的,您可以使用闭包创建变量的别名:
Function.prototype.toString = function() {
return this();
}
var x = 1;
var y = function() { return x }
x++;
alert(y); // prints 2, no need for () because of toString redefinition
发布于 2015-08-04 18:54:27
在user187291's post上进行扩展后,您还可以使用getter/setter来避免使用函数。
var x = 1;
var ref = {
get x() { return x; },
set x(v) { x = v; }
};
(ref.x)++;
console.log(x); // prints '2'
x--;
console.log(ref.x); // prints '1'
https://stackoverflow.com/questions/1686990
复制相似问题