2017-06-04 152 views
-4

我的代碼與JavaScript參考對象

相似

emp1 = emp;

emp = emp2;

如果對象是通過引用那麼爲什麼EMP1不等於EMP2?

爲什麼EMP1打印「希爾帕」而不是「馬尼什」。

var emp = 
 
    { 
 
     name : "manish", 
 
     number : 10 
 
    } 
 

 

 
var emp1 = emp; 
 

 
var emp2 = 
 
    { 
 
     name : "shilpa", 
 
     number : 20 
 
    } 
 

 
emp = emp2; 
 

 
console.log(emp); 
 
console.log(emp1); 
 
console.log(emp2);

+0

'emp1'輸出'manish' – zerkms

+1

1)'emp'被分配一個引用對象在存儲器2中)'emp1'被分配給參考'emp'被分配給3)'emp2'被分配了對存儲器中的一個對象的差分參考4)'emp'被分配給'emp2'的參考,沒有emp1參考變化的原因。 – Li357

+0

換句話說 - 在JS中沒有辦法改變變量的值,除了明確地賦值給它。 – zerkms

回答

0

這是發生了什麼。

您創建一個變量emp指向在存儲所定義的對象值的存儲器中的位置。

然後,你創建變量emp1,其指向在對象值的存儲器中的相同位置。

然後定義一個新的變量emp2指向哪裏存儲你定義的對象值在內存中的位置。

然後,您將emp指向emp2對象值的內存中的nrw位置。

emp1仍然指向第一的位置/對象。

我想你正在在方法/函數的變量聲明並且傳遞參數之間混淆(通過引用或值)

+0

不知道爲什麼人們給負面評價...實際上確切的問題是與LinkList在哪裏我試圖以前的PTR ..我只是想出了類似的例子..但容易理解...:) – Manish

+0

不知道,我沒有downvote它,所以你應該問他們:)我認爲,這是因爲你變得有點混淆變量聲明和值或通過引用變量 – quirimmo

+0

我沒有投票結束,但它已經有3人做了。無論如何,最重要的是你知道這個代碼發生了什麼 – quirimmo