2014-08-27 96 views
0

在許多其他編程語言中,可以通過複製或引用的方式獲取變量的值。引用變量

示例(PHP):

$value = 'a value'; 
$copy = $value; 
$ref = &$value; 

$value = 'new value'; 
echo $copy; // 'a value' 
echo $ref; // 'new value' 

有沒有在JavaScript中有類似的功能?我可以引用一個對象的屬性,即使我用新的字符串/對象替換屬性,引用變量將指向新的數據?

這裏是什麼,我想實現的示例代碼:

var obj = { property: 'a value' } 
var another = obj.property // save this by reference to this variable 
obj.property = 'new value' 
console.log(another) // expected: 'new value' 

到目前爲止,我已經使用getter/setter方法試過了,但是這一點,因爲我的屬性分配給一個新的變量並沒有幫助,調用getter並返回實際值。我很確定,使用Node.js EventEmitter或通過函數調用而不是屬性可以很容易地實現,但我真的在尋找某種我可能錯過的語言功能,或者尋找某種明顯的,簡單的方法來執行這些操作的東西。

謝謝!

+0

可能重複(HTTP: //stackoverflow.com/questions/10231868/pointers-in-javascript) – 2014-08-27 18:41:57

+1

在Javascript中沒有這樣的東西。只需重新定義,如果你想更新你的「另一個」。 – Lewis 2014-08-27 18:56:52

回答

0

在Javascript中,對象由refernce但原語(字符串,數字和布爾值)按值傳遞:?在JavaScript指針]的

var obj = { property: 'a value' }; 
var another = obj.property; // value 
obj.property = 'new value'; 
console.log(another); // gives a value 

var obj = { property: 'a value' }; 
var another = obj; // reference 
obj.property = 'new value'; 
console.log(another.property); // gives new value 
+0

是的,我知道 - 我正在尋找一種方法來獲取對原始變量的引用。所以當我給這個變量賦一個全新的值時,我仍然不會失去這個引用。 – 2014-08-27 18:29:32

+0

那麼,你可以使用一個對象而不是原始的,不是? – 2014-08-27 18:30:07

+0

@RobertRossmann JavaScript沒有指針 - 對變量的引用。正如你在問題中提到的那樣,['get' /'set'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)是最接近的目前由該語言支持。 – 2014-08-27 18:31:39