小编Sea*_*kin的帖子

Javascript:通过引用传递对象

在我的应用程序中,当我将数据传递给不同的对象时,我不确定是否要复制数据.就像一个例子看看下面的代码:

var DataStore = function(data) {
    this.data = data; // <-- typeof data === 'object'
}

var Controller = function() {
    var dataStore = new DataStore({foo: 'bar'});
    var plugin = new Plugin(dataStore.data);
}

var Plugin = function(data) {
   this.data = data;
}

var app = new Controller();
Run Code Online (Sandbox Code Playgroud)

当我创建插件时,它从dataStore传递data属性.然后将其分配给Plugin中的属性.请记住,传递的数据是我的问题的对象,这是在内存中创建两个变量还是插件中的data属性引用DataStore对象中的属性?

如果它在赋值后没有保留引用,我如何将DataStore传递给插件并在本地保留对它的引用?或者我是否需要将DataStore保留为应用程序范围中的全局变量并从插件中全局引用它?

javascript pass-by-reference javascript-objects

4
推荐指数
1
解决办法
6280
查看次数

PHP中使用逻辑运算符的变量赋值

我一直在尝试在 javascript 中复制短路评估以进行分配。

例如在 Javascript 中

var myObject = {foo: 'bar'};
// if myObject is undefined then assign an empty array
var obj = myObject || [];
Run Code Online (Sandbox Code Playgroud)

obj 现在将参考 myObject

我尝试在 PHP 中复制它,发现它只是将其转换为表达式并返回 true 或 false。

我可以在 PHP 中这样做:

$get = $this->input->get() ? $this->input->get() : array();
Run Code Online (Sandbox Code Playgroud)

问题是我不知道$this->input->get()幕后在做什么,所以两次调用该方法效率不高。

所以我很有创意,找到了一个解决方案,如下所示:

// $this->input->get() could return an array or false
$get = ($params = $this->input->get() and $params) ? $params : array();
Run Code Online (Sandbox Code Playgroud)

问题是它将来可能会让我感到困惑,并且可能效率不高。

那么在 PHP 中是否有更好的方法来在这样的单行表达式中分配变量,或者我应该坚持:

$get = $this->input->get();
if (!$get) {
   $get …
Run Code Online (Sandbox Code Playgroud)

php variable-assignment short-circuiting logical-operators

4
推荐指数
1
解决办法
1951
查看次数