关于Javascript的快速问题我无法找到明确简洁的答案.
我正在构建一个远远超过我之前所做的任何应用程序的应用程序,并涉及实例化多个类.然后将这些对象传递到一个处理类,该类检查用户输入,绘制到画布并更新已传递的对象.
我想知道,JavaScript如何处理将对象传递给函数?我传递了对象的副本,还是我传递了对象的引用?
因此,如果我的控制器类改变了其中一个对象变量,那么它是在任何地方改变的,还是只在该控制器看到的对象中改变了?
对于这样一个简单的,可能很容易测试的问题,我很抱歉,但由于错误堆积,我甚至不确定我是否正确地制作了一个课程.
当传入字符串或数字等基本类型变量时,值是按 value传入的。这意味着在函数内对该变量的任何更改都与函数外部发生的任何更改完全分开。
function myfunction(x)
{
// x is equal to 4
x = 5;
// x is now equal to 5
}
var x = 4;
alert(x); // x is equal to 4
myfunction(x);
alert(x); // x is still equal to 4
Run Code Online (Sandbox Code Playgroud)
然而,传入一个对象是通过引用传入的。在这种情况下,该对象的任何属性都可以在函数内访问
function myobject()
{
this.value = 5;
}
var o = new myobject();
alert(o.value); // o.value = 5
function objectchanger(fnc)
{
fnc.value = 6;
}
objectchanger(o);
alert(o.value); // o.value is now equal to 6
Run Code Online (Sandbox Code Playgroud)