[英]Why I change the value of variable which I passed as parameter when I run this function?
function radarconstructor(radar,j){
let r = radar
if(j==0){
r.center[0] = "10%"
}
if(j==1){
r.center[0] = "30%"
}
if(j==2){
r.center[0] = "50%"
}
return(r)
}
var radarradar = {
// shape: 'circle',
center:["10%","50%"],//put the radar chart in center
radius: "50%",
name: {
textStyle: {
color: '#fff',
backgroundColor: '#999',
borderRadius: 3,
padding: [3, 5]
}
},
axisLine: {
lineStyle: {
color: 'rgba(100, 100, 100, 0.15)'
}
},
splitLine: {
lineStyle: {
color: 'rgba(255, 255, 255, 0.1)'
}
},
indicator: [
{ name: 'Dimension1', max: 3},
{ name: 'Dimension2', max: 3},
{ name: 'Dimension3', max: 3},
{ name: 'Dimension4', max: 3},
{ name: 'Dimension5', max: 3},
]
}
雷達構造器(radarradar,1) console.log(radarradar.center) #this 然后顯示["30%", "50%"]
我檢查了 Js 沒有通過引用傳遞,所以我真的很困惑。 如果您回答這個問題,在此先感謝!!!
所以每個對象都通過一個引用傳遞。 基元甚至被“包裝”在函數和默認屬性(如 .toString() 或 .length)的對象處理程序中......不同之處在於基元被視為復制值到新對象中,而常規對象/函數通過它們的引用傳遞. 所以在修改對象時 - 請記住它們總是通過引用傳遞。
如果您想從對象獲取數據,則有 [property1,propert2] = 雷達析構模式,您可以在其中從對象中提取基元而不是直接修改對象。 正在制作一個新對象 - Object.from(radar)。
現在,mutation 不受歡迎——因為每個人都關心函數式風格和不變性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.