【问题标题】:Passing by reference in javascript在javascript中通过引用传递
【发布时间】:2012-11-27 18:44:23
【问题描述】:

大家好,我正在使用 javascript 和 jsplumb 库 我遇到了问题,需要专家的帮助。

这是我的场景。

我有使用 jsplumb 库创建连接的函数。

createlink = function (arg1, arg2 , con) {
  // doing some thing ;
    con = jsPlumb.connect({
             source: arg1,
             target: arg2
             });
 // doing some thing   
}

但问题是我想访问在该函数之外的creatlink() 函数中创建的相同con,所以我所做的是

/*calling the function by passing the con as refrence*/
var con;
createlink("a", "b", con);
con.setParameter('name', "mycon"); // error as con is undefined

我已经读过,在 JS 中对象可以作为输出参数传递或通过引用传递。

那么在我不想返回的函数之外访问我的 con 的正确和正确的方法应该是什么 因为这将创建一个单独的副本。

感谢任何帮助将不胜感激。

【问题讨论】:

  • createLink 中将con 中的var 去掉,或者将var con 替换为return,并且根本不需要传递引用参数。
  • ... 与con = jsPlumb.connect({...}); 一样,没有var
  • 非常感谢您的回复。我已经试过了。即已经删除了var。但它不工作。也不能返回它,因为我在 jsplumb.connect ({....}) 调用后做其他事情
  • 别费心去改你的问题,即使有东西,你仍然可以缓存结果,最后返回。如果您真的想要通过引用进行参数,请将您的变量包装在 objectarray 中。
  • 感谢您的回复。但是如果不将 con 作为参数传递,并且不将 var 放在 con 之前,将会使 congloble。我说的对吗??

标签: javascript pass-by-reference jsplumb


【解决方案1】:

你可以从函数中返回连接对象:

createlink = function (arg1, arg2) {
    return jsPlumb.connect({
        source: arg1,
        target: arg2
    });
}

var con = createlink("a", "b");

【讨论】:

  • thans @jbabey 但在 jsPlumb.connect({...}) 之后我正在做其他事情
  • 那么只需将jsPlumb.connect(...)的返回值赋给一个变量,最后返回即可。
猜你喜欢
  • 2011-12-06
  • 2010-11-21
  • 2014-12-02
  • 2012-07-16
  • 1970-01-01
  • 2021-07-09
相关资源
最近更新 更多